预处理线程问题解决方案

Posted tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了预处理线程问题解决方案相关的知识,希望对你有一定的参考价值。

问题描述:

       现有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 }

 

以上是关于预处理线程问题解决方案的主要内容,如果未能解决你的问题,请参考以下文章

vbstask方法

RunLoop总结:RunLoop的应用场景

Python 自动化 - 浏览器chrome打开F12开发者工具自动Paused in debugger调试导致无法查看网站资源问题原因及解决方法,javascript反调试问题处理实例演示(代码片段

PCL异常处理:pcl 1.8.13rdpartyoostincludeoost-1_64oost ypeofmsvc ypeof_impl.hpp(125): error(代码片段

RocketMQ - 如何用死信队列解决消费者异常

Oracle 数据库 - 使用UEStudio修改dmp文件版本号,解决imp命令恢复的数据库与dmp本地文件版本号不匹配导致的导入失败问题,“ORACLE error 12547”问题处理(代码片段