interrupt()方法
注意:(★:注意程度,仅对于我自己而言)
①★一个线程可以调用另外一个线程的interrupt()方法,
这将向暂停的线程发出一个InterruptedException,
变相起####到唤醒暂停线程的功能,是一种强制唤醒的技术
②★★一般来说,用于叫醒正在睡眠的线程
③★非静态方法
代码Demo:
//通过interrupt()强行叫醒某个线程来达到控制线程的目的
public class Interrupt {
//思路:1、不管是t1线程还是t2线程抢到CPU资源,都让其睡3秒
// 2、两个线程启动之后,睡了2秒之后,强制启动t1线程
public static void main(String[] args) {
MyRun mr1 = new MyRun(1);
Thread t1 = new Thread(mr1);
t1.setName("线程1");//设置线程名
MyRun mr2 = new MyRun(2);
Thread t2 = new Thread(mr2);
t2.setName("线程2");
//启动--就绪态
t1.start();
t2.start();
//睡了2秒之后,强行叫醒t1线程
try {
Thread.sleep(2000);
t1.interrupt();//强制叫醒t1线程
} catch (InterruptedException e) {
}
}
}
class MyRun implements Runnable{
private int num = 0;
public MyRun(int num) {
this.num = num;
}
@Override
public void run() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
}
for(int i=num;i<=10;i+=2){
//Thread.currentThread()--静态方法,返回对当前正在执行的线程对象的引用
Thread thread = Thread.currentThread();
String name = thread.getName();
System.out.print(name+":"+i+" ");
}
System.out.println();//当其中一个线程run()方法运行完时,空行
}
}