为什么要在线程中使用Join?

新手上路,请多包涵

我有 2 个线程 T1 和 T2,它们都有不同的工作,所以通常我们更喜欢通过线程连接来完成这个任务。

但是我们可以在不使用 join() 的情况下做到这一点。我们可以在 T1 线程中添加 T2 线程的代码。这有什么区别?

原文由 BOSS 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 359
2 个回答

主要区别在于当我们将 T2 线程与 T1 连接时,T2 执行作业的时间也可以被 T1 使用,这意味着它们将同时执行不同的作业。但是当您将 T2 线程代码包含在 T1 中时,这不会发生线。

原文由 BOSS 发布,翻译遵循 CC BY-SA 3.0 许可协议

加入一个线程意味着一个线程等待另一个线程结束,这样您就可以安全地访问它的结果或在两者都完成工作后继续。

示例:如果您在主线程中启动一个新线程并且两者都做一些工作,您将在新创建的线程上加入主线程,导致主线程等待第二个线程完成。因此,您可以并行执行一些工作,直到到达连接为止。

如果你将一个作业分成两部分,由不同的线程执行,你可能会得到性能提升,如果

  • 线程可以独立运行,即如果它们不依赖彼此的数据,否则你必须同步,这会降低性能
  • JVM 能够并行执行多个线程,即你有一台超线程/多核机器,JVM 利用它

原文由 Thomas 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题