首页 > 代码库 > 预处理线程问题解决方案

预处理线程问题解决方案

问题描述:

       现有3个线程thread1, thread2, thread3。这3个线程是并发执行的,当着3个线程都执行完成以后,需要执行一个finish()事件。

 

实现方法:

 1 /** 定义一个静态标记 **/
 2 private static byte nbTemp = 0;
 3 
 4 private void aa(){
 5     // 线程1
 6     Thread thread1 = new Thread(new Runnable() {
 7         @Override
 8         public void run() {
 9             // ...
10             bb();
11         }
12     });
13     // 线程2
14     Thread thread2 = new Thread(new Runnable() {
15         @Override
16         public void run() {
17             // ...
18             bb();
19         }
20     });
21     // 线程3
22     Thread thread3 = new Thread(new Runnable() {
23         @Override
24         public void run() {
25             // ...
26             bb();
27         }
28     });
29 
30     thread1.start();
31     thread2.start();
32     thread3.start();
33 }
34 
35 /** 注意:要添加关键字“synchronized”,否则会先同时操作bb()方法 */
36 private synchronized void bb(){
37     nbTemp ++;
38     if(nbTemp == (byte)3) {
39         finish(); // 条件达成,执行finish();
40     }
41 }

 

预处理线程问题解决方案