多线程   运行速度不变,程序运行效率提高,CPU的使用率更高

分时调度  :多个线程切换时  平均分配CPU的占用时间。

抢占式调度:多个线程切换时  优先级高的先使用 CPU   相同:随机

1.定义Thread子类   重写run()方法

public class Demo01 { //运行main方法 系统 开启一条执行路径(主线程)

public static void main(String[] args) {//进栈执行

MyThread td = new MyThread(); //创建线程子类对象

//MyThread td1=new MyThread("ccc");//构造方法  线程重命名

//Thread td2=Thread.currentThread(); //当前运行的线程对象

//td.run();//调用子线程run()方法  不是多线程

td.setName("子线程"); //修改线程名字

td.start();//开启子线程(新的栈)调用run()方法(进新栈)只调一次

String str = td.getName()); //获取线程名称

//String str2 = Thread.currentThread().getName() //→main

method01();//运行主线程method01()方法

public static void method01(){

for(int i=0;i<100;i++){

System.out.println("main..."+i);

public classMyThread extends Thread{

public ThreadZi(){}

public ThreadZi(String name){//构造方法   线程名

super(name); //调用父类构造方法

public void run() { //重写run()方法

//setName("bbb");//运行中修改线程名称

//System.out.println(super.getName());

System.out.println(getName()); //获取当前线程名称 继承

for(int i=0;i<100;i++){

sleep(1000);//暂停1秒   父类run()无异常  只能try

System.out.println(getName()+"..."+i);

//创建线程对象时,直接重写Thread类中的run方法

new Thread() {

public void run() {

System.out.println("重写的run方法");

}.start();

多线程2(常用) 线程对象、任务解耦

//2.实现Runnable接口   实现run()方法

public class MyRunnable implements Runnable{//解决多继承问题

public void run(){

for(int i=0;i<100;i++){

System.out.println(Thread.currentThread().getName()+"..."+i);

public class Demo01 {

public static void main(String[] args) {

MyRunnable mr=new MyRunnable(); //任务对象

Thread t1=new Thread(mr); //线程对象 传入任务Runnable

//Thread t1=new Thread(mr,"ccc"); //构造方法  线程重命名

t1.start(); //开启线程  执行任务对象的run方法

Thread t2=new Thread(mr); //再开一个线程

t2.start();

method(); //整个线程

//匿名内部类的方式实现Runnable接口,重新Runnable接口中的run方法

new Thread(

new Runnable(){

public void run(){

System.out.println("重写的run方法");

).start();

//Thread.State     线程状态  枚举

//New :创建new Thread()

//Blocked :阻塞CPU没时间/同步锁

//Runnable :运行td.start()

//Timed_waiting:休眠   到时间自己进入运行/阻塞状态

//Waiting :无限等待wait(); notify()唤醒

//Terminated :死亡run()方法结束/td.stop()结束线程

线程池原理

多线程   运行速度不变,程序运行效率提高,CPU的使用率更高分时调度 :多个线程切换时 平均分配CPU的占用时间。抢占式调度:多个线程切换时 优先级高的先使用 CPU 相同:随机1.定义Thread子类 重写run()方法public class Demo01 { //运行main方法 系统 开启一条执行路径(主线程)public static void main(String[]...
修改 线程 的名字是指:正在执行动作的 线程 的姓名。 添加 线程 的动作是指:执行动作的 线程 所做的工作。 如何给 线程 改名字public class Test4 { public static void main (String[] args) { MyThread3 myThread3 = new MyThread3("搬砖的"); myThread3.start();
一、 线程 的命名与取得 所有的 线程 程序的执行,每一次都是不同的运行结果,如果要想区分每一个 线程 ,那么久必须依靠 线程 的名字。对于 线程 的名字一般而言会在启动之前进程定义,不建议对已经启动的 线程 ,进行更改名称,或者为不同 线程 设置重名的情况 如果要进行 线程 名称的操作,可以使用Thread类的如下 方法 : *构造 方法 :public Thread (Run