zoukankan      html  css  js  c++  java
  • 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. "  
    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初始化顺序
    生产者与消费者
    Java线程
    思科QoS知识全面了解
    思科3750交换机堆叠配置指南
    Cisco VRRP Config Case1
    思科交换机快速定位流量异常端口
    QoS笔记
    Cisco BGP团体配置要领
    Cisco BGP Local_Pref配置要领
  • 原文地址:https://www.cnblogs.com/sand-tiny/p/3962893.html
Copyright © 2011-2022 走看看