联合线程(案例顾客买蛋糕 :使用join()方法)

运行效果图:

 
 
代码:
package com.niit.syntronized;

/**
 * @author: Annie
 * @date:2016年6月15日
 * @description:线程联合(顾客到蛋糕店买蛋糕)使用join()方法
 */
public class ThreadJoin implements Runnable{

    Thread joinThread;
    Cake cake;
    public void setThread(Thread t){
        joinThread =t;
    }
    @Override
    public void run() {
        if(Thread.currentThread().getName().equals("顾客")){
            System.out.println(Thread.currentThread().getName()+"正在等待"+joinThread.getName()+"制作生日蛋糕");
            try {
                joinThread.start();
                joinThread.join();
            } catch (InterruptedException e) {}
            
            System.out.println(Thread.currentThread().getName()+"买了生日蛋糕:价钱" + cake.price);
            
        }else if (Thread.currentThread()==joinThread){
            System.out.println(Thread.currentThread().getName()+"开始制作蛋糕,请耐心等待.........");
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            cake = new Cake("生日蛋糕",158);
            System.out.println(joinThread.getName()+"制作完毕");
        }
        
    }
    
    class Cake {
        int price;
        String name;
        
        public Cake(String name,int price) {
            this.price = price;
            this.name = name;
        }
        
    }
    
    public static void main(String[] args) {
        ThreadJoin threadJoin = new ThreadJoin();
        Thread customer = new Thread(threadJoin);
        customer.setName("顾客");
        Thread cakeMake = new Thread(threadJoin);
        cakeMake.setName("蛋糕");
        threadJoin.setThread(cakeMake);
        customer.start();
    }
}
原文地址:https://www.cnblogs.com/wangmingxia/p/5587704.html