当前位置:  开发笔记 > 编程语言 > 正文

线程同步问题(在java中)

如何解决《线程同步问题(在java中)》经验,为你挑选了1个好方法。

我的java应用程序有一个加载任务,需要两个可以并行化的服务器调用.所以我启动了一个Thread t1(执行task1)和一个Thread t2(for task2).我希望在其他任务(1和2)结束时执行特定任务task3.当然我不知道task1task2中哪一个会先完成...

哪个是最简单(也是最安全)的代码编码方式?

谢谢您的帮助



1> Ran Biron..:

你有几个选择:

    如果task3在一个单独的线程上并且task1和task2线程对其任务是独占的(没有线程池)并在任务完成时完成,则可以使用{T1.join(); T2.join();}等待两个线程.优点:简单.缺点:情况很少那么简单.

    如果task3位于单独的线程上,则可以使用在所有线程之间共享的java.util.concurrent.CountDownLatch.任务3将等待锁存器,而task1和task2将减少它.优点:相当容易,不注意环境.缺点:要求T3在真正需要之前创建.

    如果task3只应在task1和task2完成之后创建(在task1和task2完成之后没有单独的线程),你必须构建一些更复杂的东西.我建议您创建自己的ExecutorService,该条件是未来的条件,只在条件发生变化时执行未来,或者创建一个管理服务来检查条件并根据这些条件提交给定的期货.记住,这是我的头脑,可能有更简单的解决方案.优点:资源友好.缺点:复杂.

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有