BOS*_*OSS 16 java multithreading
我有2个线程T1和T2,两个都有不同的工作,所以我们通常更喜欢通过线程连接来完成这个任务.
但我们可以使用join()完成此操作.我们可以在T1线程中添加T2线程的代码.这有什么不同?
Tho*_*mas 25
加入一个线程意味着一个人等待另一个人结束,这样你就可以安全地访问它的结果,或者在两个人完成工作后继续.
示例:如果您在主线程中启动一个新线程并且两者都做了一些工作,那么您将加入新创建的线程上的主线程,导致主线程等待第二个线程完成.因此,您可以并行完成一些工作,直到您到达联接.
如果将作业拆分为由不同线程执行的两个部分,则可以获得性能改进
use*_*421 22
通常我们更喜欢通过线程连接来完成这个任务.
不,我们不.我们通过启动两个线程来完成此任务.没有义务使用,join()因此没有"应该"使用它.如果要在另一个线程完成时暂停当前线程,请执行此操作.如果你不这样做,不要.
Leo*_*ngs 14
如果你T1.join();从T2 打电话,它将等待T1死亡(完成).它是一种线程同步的形式,但是从你描述的内容中你可以简单地触发两个线程并且根本不使用join.如果您使用两个线程,那么工作将并行完成,如果您只将代码放在一个线程中,那么工作将按顺序完成.
以下是使用join的原因:当最终结果取决于可以同时运行的两个任务的结果时,可以使用它.
示例1:用户单击"提交"按钮后,程序必须调用两个外部Web服务来更新其各自的系统.它可以在同一时间完成,这就是为什么我们要为其中一个webservices创建一个单独的线程.
用户将坐在屏幕前等待通知:您的提交正常!两个线程完成后,屏幕应该说OK.
BOS*_*OSS -8
主要区别是,当我们将 T2 线程与 T1 加入时,T2 执行作业的时间也可以被 T1 利用,这意味着它们将并行执行不同的作业。但是当您在 T1 中包含 T2 线程代码时,这种情况就不会发生线。