package Thread.Basic; public class JoinTest { public static void main(String[] args) { Sleep sleep=new Sleep("sleep", 3000); Joiner joiner=new Joiner(sleep, "Joiner"); joiner.start(); //对joinçæ¹æ³å¯ä»¥è¢«ä¸æï¼è°ç¨Interruptæ¹æ³ sleep.interrupt(); } } class Sleep extends Thread{ private int duration; public Sleep(String name,int dutation){ //è°ç¨ç¶ç±»çThread(String name)çæé 彿° super(name); this.duration=dutation; start(); } public void run() { try { sleep(duration); } catch (InterruptedException e) { //è¿éæ¾ç¤ºæ²¡æè¢«ä¸æï¼ï¼åå ï¼å¨è°ç¨isInterruptæ¶ï¼ä¼è¢«è®¾ç½®ä¸ä¸ªä¸ææ å¿ä½ï¼ä½æ¯æè·å¼å¸¸æ¶ä¼æ¸ é¤è¿ä¸ªæ å¿ System.out.println(this.getName()+"被é»å¡"+duration+"毫ç§"+"ç®åæ¯å¦è¢«ä¸æï¼"+isInterrupted()); //return ; } System.out.println(getName()+"线ç¨has awakened"); } } class Joiner extends Thread{ private Sleep sleep; private int count=5; public Joiner(Sleep sleep,String name){ this.sleep=sleep; } @Override public void run() { while(true){ System.out.println(this); if(count--==0) return; if(count==3){ try { sleep.join(); } catch (InterruptedException e) { // TODO Auto-generated catch block System.out.println(getName()+"is Interrupted"); } System.out.println(getName()+"join 宿"); } } } public String toString(){ return getName()+":"+count; } }