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

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

    1. package demo.thread;  
    2.   
    3. /** 
    4.  *sleep()是静态方法,是属于类的,作用是让当前线程阻塞  
    5.  *join()是使线程同步,如在某个线程里调用t.join()表示t线程执行完再执行当前线程 
    6.  *interrupt()给线程设定一个标志表示该线程已被中断,但在异常捕获时将清理这个标志 
    7.  *所以在catch子句中,该标志为false  
    8.  */  
    9. public class SleepJoinDemo {  
    10.     public static void main(String[] args) {  
    11.         Sleeper sleep1 = new Sleeper("sleep1"1500);  
    12.         Sleeper sleep2 = new Sleeper("sleep2"1500);  
    13.         Joiner join1 = new Joiner("join1", sleep1);  
    14.         Joiner join2 = new Joiner("join2", sleep1);  
    15.         sleep2.interrupt();  
    16.     }  
    17. }  
    18.   
    19. class Sleeper extends Thread {  
    20.     // 可以传参设定睡眠时间  
    21.     private int sleepTime;  
    22.   
    23.     public Sleeper(String name, int sleepTime) {  
    24.         super(name);  
    25.         this.sleepTime = sleepTime;  
    26.         start();// 在构造方法中启动  
    27.     }  
    28.   
    29.     @Override  
    30.     public void run() {  
    31.         try {  
    32.             sleep(sleepTime);  
    33.         } catch (InterruptedException e) {  
    34.             System.out.println(getName() + " was interrupted.\n"  
    35.                     + "isInterrupted():" + isInterrupted());  
    36.             return;  
    37.         }  
    38.         System.out.println(getName() + " has awakened");  
    39.     }  
    40. }  
    41.   
    42. class Joiner extends Thread {  
    43.     private Sleeper sleeper;  
    44.   
    45.     public Joiner(String name, Sleeper sleeper) {  
    46.         super(name);  
    47.         this.sleeper = sleeper;  
    48.         start();  
    49.     }  
    50.   
    51.     public void run() {  
    52.         try {  
    53.             sleeper.join();//合并,异步变同步  
    54.         } catch (InterruptedException e) {  
    55.             System.out.println("interrupted");  
    56.         }  
    57.         System.out.println(getName() + " join completed");  
    58.     }  
    59. }  
posted @ 2012-01-19 16:07  王爵的技术博客  阅读(645)  评论(0)    收藏  举报

我的技术博客:https://biezhi.me

Github:https://github.com/biezhi 

微博:http://weibo.com/u/5238733773

Twitter:https://twitter.com/biezhii