码迷,mamicode.com
首页 > 编程语言 > 详细

javaSE之线程联合

时间:2014-08-07 00:33:47      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   java   io   2014   art   

        首先定义 : 一个线程A在占有CPU资源期间 ,可以让其他线程调用join()和本线程联合。

   嗯哈,像书本这个列子:

           如: B.join();

       我们称A在运行期间联合了B, 如果线程A在占有CPU资源期间一旦联合B线程,那么A线程将立刻

       中断执行,一直等到它联合的线程B执行完毕,A线程再重新排队等待CPU资源,以便恢复执行,

      如果A准备联合的B线程已经结束,那么B.join(),不会产生任何效果。

    

 1 package dialog_color;
 2 
 3 public class Example12_8 
 4 {
 5     public static void main(String args [])
 6     {
 7        ThreadJoin a = new ThreadJoin();
 8        Thread customer = new Thread(a);
 9        Thread cakeMaker = new Thread(a);
10        customer.setName("顾客");
11        cakeMaker.setName("蛋糕");
12        a.setJoinThread(cakeMaker);
13        customer.start();
14     }
15 }
16 class ThreadJoin implements Runnable
17 {
18     Cake cake;
19     Thread joinThread;
20     public void setJoinThread(Thread it)
21     {
22       this.joinThread=it;
23     }
24     public void run() {
25         // TODO Auto-generated method stub        
26       if(Thread.currentThread().getName().equals("顾客"))
27       {
28           System.out.println(Thread.currentThread().getName()
29                   +"等待"+joinThread.getName()+"制作生日蛋糕"); 
30           try { 
31               joinThread.start();
32                joinThread.join();
33             
34         } catch (InterruptedException e) {
35             // TODO Auto-generated catch block
36         //    e.printStackTrace();
37         }
38         System.out.println(Thread.currentThread().getName()+"买了"+cake.name+"价钱: "+cake.price);
39       }
40       else if(Thread.currentThread()==joinThread)
41       {
42         System.out.println(joinThread.getName()+"开始制作生日蛋糕,请等待......");
43         try {
44             Thread.sleep(2000);
45         } catch (InterruptedException e) {
46             // TODO Auto-generated catch block
47             e.printStackTrace();
48         }
49         cake=new Cake("生日蛋糕",158);
50         System.out.println(joinThread.getName()+"制作完成!");
51       }
52     }
53     
54   class Cake    //内部类  相当于一个结构体) (c/c++)
55   {
56       int price ;
57       String name;
58       Cake(String name ,int price)
59       {
60         this.name=name;
61         this.price=price;
62       }
63   }    
64 }

 效果图:

bubuko.com,布布扣

javaSE之线程联合,布布扣,bubuko.com

javaSE之线程联合

标签:style   blog   http   color   java   io   2014   art   

原文地址:http://www.cnblogs.com/gongxijun/p/3896061.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!