首页 > 代码库 > java多线程总结三:sleep()、join()、interrupt()示例

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

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

[java] view plaincopy
  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.     }  

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