Thread类的常用方法:
1.获取当前线程名称
- ①使用Thread类中的getName()
String getName();返回该线程的名称 - ②可以先获取当前正在执行的线程,使用线程中的getName()获取线程的名称
static Thread currentThread()–静态方法,需要用类名访问 - 线程名称:
主线程:main
新线程:Thread-0,Thread-1,Thread-2…
public class Main01 {
class MyThread extends Thread {
@Override
public void run() {
System.out.println(getName());
}
}
public static void main(String[] args) {
MyThread mt=new MyThread();
mt.start();
//因为主线程没有基础继承Thread类,所以不能狗直接调用getName(),需要先获取当前线程,再进行调用
System.out.println(Thread.currentThread().getName());
}
}
2.设置线程名称
-
①使用Thread类中的方法setName(),在启动线程之前使用
void setName(String name)
-
②创建一个带参数的构造方法,参数创思线程的名称,调用父类的代餐构造方法,把线程名床底给父类,让父类(Thread给他起名字),在创建线程时使用
3.暂停当前线程
- public static void sleep(long millis) throws InterruptedException使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行),具体取决于系统定时器和调度程序的精度和准确性。 线程不会丢失任何显示器的所有权。
- 参数:millis - 以毫秒为单位的睡眠时间长度
- 异常 :
IllegalArgumentException - 如果 millis值为负数
InterruptedException - 如果任何线程中断当前线程。 当抛出此异常时,当前线程的中断状态将被清除。
public class MyThread extends Thread {
@Override
public void run() {
for (int i = 0; i <20 ; i++) {
System.out.println("MyThread"+i);
try {
sleep(1000);//单位毫秒,会抛出异常,需要进行异常处理
//效果:循环在打印时,会一秒打印一次
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}