线程控制—interrupt()

来源:互联网 发布:vscode自动编译sass 编辑:程序博客网 时间:2024/05/06 00:11

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;}@Overridepublic 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()方法运行完时,空行}}


0 0
原创粉丝点击