packagecom.app.d2_thread_api;publicclassMyThreadextendsThread{@Overridepublicvoidrun(){for(int i =0; i <4; i++){System.out.println(Thread.currentThread().getName()+"输出:"+ i);}}}
packagecom.app.d2_thread_api;/**
目标:掌握线程常用API
*/publicclassThreadDemo01{// main方法由主线程负责调度的publicstaticvoidmain(String[] args){// 创建线程任务对象Thread t1 =newMyThread();// 设置t1线程名称(默认名称:Thread-索引,例如: Thread-0、Thread-1)
t1.setName("1号线程");// 启动线程
t1.start();// 获取t1线程名称并输出到控制台System.out.println(t1.getName());Thread t2 =newMyThread();
t2.start();System.out.println(t2.getName());// 获取当前线程对象Thread m =Thread.currentThread();System.out.println(m.getName());// 主线程的名称就叫mainfor(int i =0; i <4; i++){System.out.println(m.getName()+"线程输出:"+ i);}}}
1号线程
Thread-1
main
main线程输出:0
Thread-1输出:0
1号线程输出:0
Thread-1输出:1
main线程输出:1
Thread-1输出:2
1号线程输出:1
Thread-1输出:3
main线程输出:2
1号线程输出:2
main线程输出:3
1号线程输出:3
Process finished with exit code 0
2、Thread的构造器
构造器
说明
public Thread(String name)
为当前线程指定名称
public Thread(Runnable target)
封装Runnable对象成为线程对象
public Thread(Runnable target, String name)
封装Runnable对象成为线程对象,并指定线程名称
packagecom.app.d2_thread_api;publicclassMyThreadextendsThread{publicMyThread(){}publicMyThread(String name){// 为当前线程设置名称,通过super关键字,送给父类Thread的有参数构造器的初始化名称super(name);}@Overridepublicvoidrun(){for(int i =0; i <4; i++){System.out.println(Thread.currentThread().getName()+"输出:"+ i);}}}
packagecom.app.d2_thread_api;/**
目标:掌握Thread类的有参构造器设置线程名称
*/publicclassThreadDemo02{publicstaticvoidmain(String[] args){Thread t1 =newMyThread("1号线程");
t1.start();System.out.println(t1.getName());Thread t2 =newMyThread();
t2.start();System.out.println(t2.getName());Thread m =Thread.currentThread();System.out.println(m.getName());
m.setName("最牛线程");for(int i =0; i <4; i++){System.out.println(m.getName()+"输出:"+ i);}}}
1号线程
Thread-0
main
最牛线程输出:0
最牛线程输出:1
1号线程输出:0
最牛线程输出:2
最牛线程输出:3
Thread-0输出:0
1号线程输出:1
Thread-0输出:1
1号线程输出:2
1号线程输出:3
Thread-0输出:2
Thread-0输出:3
Process finished with exit code 0
3、Thread不常用方法:
yield、join、interrupt;
不推荐的方法:stop、守护线程、线程优先级等线程的控制方法,在开发中很少使用;
这些方法会在高级篇及后续需要使用到的时候再讲解。
4、Thread类的线程休眠方法
方法名称
说明
public static void sleep(long time)
让当前线程休眠指定的时间后再继续执行,单位为毫秒
packagecom.app.d2_thread_api;/**
目标:掌握Thread的线程休眠API
*/publicclassThreadDemo03{// main方法是由主线程负责调度的publicstaticvoidmain(String[] args)throwsException{for(int i =1; i <=5; i++){System.out.println("第"+ i +"天了~");if(i ==2){// 段子:项目经理让我加上了这行代码,如果用户愿意充钱,我就注释掉!!// 到第二天了,休息五秒Thread.sleep(5000);}}}}
在输出到第2天的时候,线程会休眠5秒钟,然后再输出剩下的天数。
第1天了~
第2天了~
第3天了~
第4天了~
第5天了~
Process finished with exit code 0