Thread常用API说明
- Thread常用方法:获取线程名称getName()、设置名称setName()、获取当前线程对象currentThread()。
- 至于Thread类提供的诸如:yield、join、interrupt、不推荐的方法 stop 、守护线程、线程优先级等线程的控制方法,在开发中很少使用,这些方法会在高级篇以及后续需要用到的时候再为大家讲解。
- 当有很多线程在执行的时候,我们怎么去区分这些线程呢?
- 此时需要使用Thread的常用方法:
getName()
、setName()
、currentThread()
等。
Thread类获得当前线程的对象
注意:
- 1、此方法是Thread类的静态方法,可以直接使用Thread类调用。
- 2、这个方法是在哪个线程执行中调用的,就会得到哪个线程对象。
Thread的构造器
/**
* 目标:线程的API
*/
public class ThreadDemo01 {
//main方法是由主线程负责调度的
public static void main(String[] args) {
Thread t1= new MyThread();
t1.setName("1号");
t1.start();
/*启动线程之后得到线程的名字*/
System.out.println(t1.getName());//Thread-0
Thread t2= new MyThread();
t2.setName("2号");
t2.start();
System.out.println(t2.getName());//Thread-1
/*这两个线程区分不了,结果都是子线程正在输出...,为了区分可以加上Thread类自带的name,设置setName*/
/*上边的两个线程起了名字也看不到,可以通过getName方法拿到名字*/
//哪个线程执行它,它就得到哪个线程对象(当前线程对象),这行代码是主线程执行它,所以它代表主线程
Thread m = Thread.currentThread();
System.out.println(m.getName());//main
for (int i = 0; i < 5; i++) {
System.out.println("main正在输出:"+i);
}
}
}
public class MyThread extends Thread{
@Override
/*public void run() {
for (int i = 0; i < 5; i++) {
System.out.println("子线程正在输出:"+i);
}
}*/
/*这样就可以得到当前线程的名字*/
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getName()+"输出"+i);
}
}
}
改进代码后:
Thread类的线程休眠方法
1.Thread常用方法、构造器
2. Thread常用方法、构造器
最后一个构造方法可以为实现Runnable接口的类指定线程名,因为毕竟接口不像Thread类可以直接使用构造方法传递参数。