zoukankan      html  css  js  c++  java
  • Thread.join详解

    /**
     * 如果某个线程在另一个线程t上调用t.join;那么此线程将被挂起,直到目标t线程的结束才恢复即t.isAlive返回为假
     * 
     * @date:2018年6月27日
     * @author:zhangfs
     * 
     * 
     */
    public class ClientDemo {
    
        public static void main(String[] args) {
            SleepThread sleepThread1 = new SleepThread("sleepThread1", 1500),
                    sleepThread2 = new SleepThread("sleepThread2", 1500);
    
            JoinThread joinThread1 = new JoinThread("joinThread1", sleepThread1),
                    joinThread2 = new JoinThread("joinThread2", sleepThread2);
    
            sleepThread2.interrupt();
    
        }
    }
    
    

    public class SleepThread extends Thread {

    
    

    private int duration;

    
    

     

    
    

    public SleepThread(String name, int sleepTime) {

    
    

    super(name);

    
    

    this.duration = sleepTime;

    
    

    start();

    
    

    }

    
    

     

    
    

    @Override

    
    

    public void run() {

    
    

    // TODO Auto-generated method stub

    
    

    // super.run();

    
    

    try {

    
    

    sleep(duration);

    
    

    } catch (InterruptedException e) {

    
    

    // TODO Auto-generated catch block

    
    

    // e.printStackTrace();

    
    

    System.out.println(getName() + " was interrupted. is interrupted is :" + isInterrupted());

    
    

    return;

    
    

    }

    
    

    System.out.println(getName() + " has awakened");

    
    

    }

    
    

    }

     

     

    public class JoinThread extends Thread {

     

    private SleepThread sleepThread;

     

    public JoinThread(String name, SleepThread sleepThread) {

    super(name);

    this.sleepThread = sleepThread;

    start();

    }

     

    @Override

    public void run() {

    // TODO Auto-generated method stub

    try {

    sleepThread.join();

    } catch (InterruptedException e) {

    // TODO Auto-generated catch block

    // e.printStackTrace();

    System.out.println("interrupted ");

    }

    System.out.println(getName() + "  Join Complete");

    }

    }


    output:
    
    

    sleepThread2 was interrupted. is interrupted is :false

    
    

    joinThread2  Join Complete

    
    

    sleepThread1 has awakened

    
    

    joinThread1  Join Complete

     
  • 相关阅读:
    java学习路线:给大家讲一个笑话
    谈谈关于IT劳务派遣与人力资源外包的区别!附劳务人力报酬管理目录
    智能化时代来临,CFO们如何才能更管理企业财务!
    谈谈关于创业者和股东成立公司如何出资,出资方式有哪些!附税务管理学习目录
    【创业者关注】初创企业如何节税,节税需要注意哪些?
    谈谈关于财务信息化水平最高的企业是怎样
    谈谈关于技术时代会计信息化的新变革
    谈谈关于IT创业者需要了解初创公司哪些财务管理的常识!
    通过 ML.NET 使用预训练残差网络 ResNet 模型实现手势识别
    1025. 除数博弈-动态规划-简单
  • 原文地址:https://www.cnblogs.com/zhangfengshi/p/9234953.html
Copyright © 2011-2022 走看看