多线程的join()方法实际中有用吗?

孤尽JavaSea 2010-02-09 07:49:24
它到底是什么作用。
...全文
401 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
孤尽JavaSea 2010-02-14
  • 打赏
  • 举报
回复
个人觉得join方法没有实际用处。
vcshcn 2010-02-10
  • 打赏
  • 举报
回复
join是等待线程结束。我在项目中写过服务器线程,在服务器完成后提示给用户“停止完成”四个字,需要阻塞时可以用join
yueguangkai001 2010-02-10
  • 打赏
  • 举报
回复
引用 6 楼 gao11811 的回复:
实际中非常有用,join不一定是针对单线程,可以是线程组

我的这个项目虽说不算多大,但是没有看到一处用到join的方法,都是用sleep
gao11811 2010-02-10
  • 打赏
  • 举报
回复
实际中非常有用,join不一定是针对单线程,可以是线程组
Aniao 2010-02-10
  • 打赏
  • 举报
回复
楼上thinking in java里的说法是:只是像JVM提出建议,并不保证其他线程这时候就不执行。估计只是在抢占CPU上占了些先机而已
孤尽JavaSea 2010-02-10
  • 打赏
  • 举报
回复
有没有小程序测试一下的??
yueguangkai001 2010-02-10
  • 打赏
  • 举报
回复
我感觉用的比较的少,一般都是用sleep让他睡上多少ms
yuwenbao 2010-02-10
  • 打赏
  • 举报
回复
当你用多线程分段解析一个大的文本文件,然后想把结果汇总的时候,就可以在主线程中调用其他解析文本文件的线程的join方法,然后对其结果进行汇总,不过现在基本不用这种形式了,基本用future模式进行了替代,你很少会看到直接join的方法了
  • 打赏
  • 举报
回复
Thread.sleep thread.join
bobo364 2010-02-10
  • 打赏
  • 举报
回复
join方法:假如你在A线程中调用了B线程的join方法(B.join();),这时B线程继续运行,A线程停止(进入阻塞状态)。等B运行完毕A再继续运行,中途B线程不受影响。这里要注意的是A先成停止的位置就在调用join方法处,后面代码不执行,要等B完了以后再执行。
sleep方法和yield方法要做个比较!线程中调用sleep方法后,本线程停止(进入阻塞状态),运行权交给其他线程。而线程中调用yield方法后本线程并不停止,运行权又本线程和优先级不低与本线程的线程来抢(这里要注意并不是优先级低的就一定抢不过优先级高的,优先级高的只是时间片大一些)。
BigKing911 2010-02-10
  • 打赏
  • 举报
回复
没用过,第一次听说,长见识了!
x-teamer团队 2010-02-10
  • 打赏
  • 举报
回复
很少拿Join来同步的
借我那把枪吧 2010-02-09
  • 打赏
  • 举报
回复
引用 2 楼 java_gannbare 的回复:
我的理解是这样的。如果一个线程调用了join方法,就是说其它线程要等到这个线程执行完,才能执行。
如果join(3秒),就是说起码给它3秒钟的执行时间。
对头,补充下,不是起码给3秒,是只给3秒,3秒执行不完,其他线程可以继续执行
孤尽JavaSea 2010-02-09
  • 打赏
  • 举报
回复
我的理解是这样的。如果一个线程调用了join方法,就是说其它线程要等到这个线程执行完,才能执行。
如果join(3秒),就是说起码给它3秒钟的执行时间。
借我那把枪吧 2010-02-09
  • 打赏
  • 举报
回复
当然有用 JDA为我们提供了三种,如下:
join() 等待该线程终止。
join(long millis) 等待该线程终止的时间最长为 millis 毫秒。
join(long millis, int nanos) 等待该线程终止的时间最长为 millis 毫秒 + nanos 纳秒。
当你想让某个线程优先执行时,可以调用join()让该线程加入先执行,如果要指定时间,可以设置参数

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧