Java的join()方法

来源:互联网 发布:java设计实训学校 编辑:程序博客网 时间:2024/05/21 09:39

join()方法可以让原来并列执行的线程,顺序执行,比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B。

如果对A线程使用interrupt()方法,则join()方法的低啊用可以被中断。

class Sleeper extends Thread{    private int duration;    public Sleeper(String name,int sleepTime){        super(name);        duration=sleepTime;        start();    }    @Override    public void run() {        try {            TimeUnit.MILLISECONDS.sleep(duration);        } catch (InterruptedException e) {            System.out.println(getName()+" was interrupted."+            "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();    }    @Override    public void run() {        try {            sleeper.join();        } catch (InterruptedException e) {            System.out.println("Interrupted");        }        System.out.println(getName()+" join completed");    }}public class Joining {    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 was interrupted.isInterrupted(): false
Doc join completed
Sleepy has awakened
Dopey join completed


0 0