运行效果图:
代码:
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(); } }