java多线程总结三:sleep()、join()、interrupt()示例

来源:互联网 发布:编个写歌的软件下载 编辑:程序博客网 时间:2024/06/06 14:20

这是一个来自《java编程思想上的示例》

package demo.thread;/** *sleep()是静态方法,是属于类的,作用是让当前线程阻塞  *join()是使线程同步,如在某个线程里调用t.join()表示t线程执行完再执行当前线程 *interrupt()给线程设定一个标志表示该线程已被中断,但在异常捕获时将清理这个标志 *所以在catch子句中,该标志为false  */public class SleepJoinDemo {public static void main(String[] args) {Sleeper sleep1 = new Sleeper("sleep1", 1500);Sleeper sleep2 = new Sleeper("sleep2", 1500);Joiner join1 = new Joiner("join1", sleep1);Joiner join2 = new Joiner("join2", sleep1);sleep2.interrupt();}}class Sleeper extends Thread {// 可以传参设定睡眠时间private int sleepTime;public Sleeper(String name, int sleepTime) {super(name);this.sleepTime = sleepTime;start();// 在构造方法中启动}@Overridepublic void run() {try {sleep(sleepTime);} catch (InterruptedException e) {System.out.println(getName() + " was interrupted.\n"+ "isInterrupted():" + isInterrupted());return;}System.out.println(getName() + " has awakened");}}class Joiner extends Thread {private Sleeper sleeper;public Joiner(String name, Sleeper sleeper) {super(name);this.sleeper = sleeper;start();}public void run() {try {sleeper.join();//合并,异步变同步} catch (InterruptedException e) {System.out.println("interrupted");}System.out.println(getName() + " join completed");}}


 

原创粉丝点击