java编程思想笔记-并发之线程加入

来源:互联网 发布:网络整合营销 编辑:程序博客网 时间:2024/06/06 02:12
package com.tij.learning1;/** *  * @author wenruo * @date 2017-8-7 * */class Joiner extends Thread{    private Sleeper sleeper;    public Joiner(String name,Sleeper sleeper){        super(name);        this.sleeper=sleeper;        start();    }    @Override    public void run(){        try {            //将当前线程挂起,直至sleeper线程运行完毕,继续调用当前线程            sleeper.join();        } catch (InterruptedException e) {            System.out.println(sleeper.getName()+" has interrupted");        }        System.out.println(getName()+" completed");    }}class Sleeper extends Thread {    private int duration;    public Sleeper(String name,int sleeperTime){        super(name);        this.duration=sleeperTime;        start();    }    @Override    public void run(){        try {            sleep(duration);        } catch (Exception e) {            System.out.println(getName()+" has interrupted");            return;        }        System.out.println(getName()+" has awakened");    }}public class JoinTest extends Thread {    public static void main(String[] args) {        Sleeper sleeper=new Sleeper("Sleepy", 1500),                grumpy=new Sleeper("Grumpy", 1500);        Joiner dopey=new Joiner("Dopey", sleeper),                doc=new Joiner("Doc", grumpy);        //设置grumpy interrupt 线程已经中断,但是在异常被捕获的时候将清理该标志,        //所以线程在异常捕获的时候,这个标志始终为假        grumpy.interrupt();    }}
阅读全文
0 0