歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java多線程總結三:sleep()、join()、interrupt()示例

這是一個來自《Java編程思想》上的示例。 下載見 http://www.linuxidc.com/Linux/2011-11/48069.htm

  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. }  
Copyright © Linux教程網 All Rights Reserved