gpt4 book ai didi

java - 线程同步问题(java中)

转载 作者:搜寻专家 更新时间:2023-11-01 01:39:32 25 4
gpt4 key购买 nike

我的 Java 应用程序有一个加载任务,它需要两个可以并行化的服务器调用。因此,我启动了一个线程 t1(执行 task1)和一个线程 t2(用于 task2)。然后,当其他两个任务(1 和 2)都结束时,我想执行一个特定的任务 task3。自然分不清task1task2哪个先完成...

哪种编码方式最简单(也是最安全)?

谢谢你的帮助

最佳答案

您有多种选择:

  1. 如果 task3 在一个单独的线程上并且 task1 和 task2 线程是它们的任务独占的(没有线程池)并且在任务完成时完成,您可以使用 {T1.join(); T2.join();} 等待两个线程。优点:容易。缺点:情况很少这么简单。
  2. 如果 task3 在一个单独的线程上,您可以使用在所有线程之间共享的 java.util.concurrent.CountDownLatch。任务 3 将等待闩锁,而任务 1 和任务 2 将减少闩锁。优点:非常简单,不关心环境。缺点:需要在真正需要之前创建 T3。
  3. 如果 task3 只应在 task1 和 task2 完成后创建(在 task1 和 task2 完成之前没有单独的线程),则您必须构建一些更复杂的东西。我建议要么创建自己的 ExecutorService,它在未来添加一个条件,并且只在条件改变时执行 future ,或者创建一个管理服务来检查条件并根据这些条件提交给定的 future 。请注意,这是我的首要任务,可能会有更简单的解决方案。优点:资源友好。缺点:复杂。

关于java - 线程同步问题(java中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/181690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com