package com.bjpowernode.javase10.Io.BzhanShangkejava.src.com.bjpowernode.javase11.thread;
/*
怎么唤醒一个正在睡眠的线程:终止sleep线程
*/
public class ThreadTest08 {
public static void main(String[] args) {
Thread t=new Thread(new MyRunnable2());
t.setName("t");
t.start();
// 希望5秒之后,t线程醒来(5秒之后主线程手里的活儿干完了。)
try {
Thread.sleep(1000*5);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 中断线程的睡眠(这种中断睡眠的方式依靠了java的异常处理机制。)
t.interrupt();//干扰
}
}
class MyRunnable2 implements Runnable{
//run()方法中的的异常不能throw,只能try catch
// 因为run()方法在父类中没有抛出任何异常,子类不能比父类抛出更多的异常。
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"--->begin");
// 睡眠1年
try {
Thread.sleep(1000*60*60*24*365);
} catch (InterruptedException e) {
// 打印异常信息
// e.printStackTrace();
}
// 1年之后才执行这里
System.out.println(Thread.currentThread().getName()+"--->end");
}
}
07-09
1003