-1
A
回答
1
从你的问题我summise,你想要做什么Thread.join()
不使用Thread.join()
但使用Semaphore
。我可以考虑一些你可能想要这样做的原因,但我觉得你可能只是想用join()
。然而,在这里。
让我们先从什么join()
不 - 摘自的javadoc
Waits for this thread to die
通过它我们可以假定它意味着停止运行。好的,我们需要的是一个Semaphore
,有一个许可证,当线程死亡时释放。让我们假设你可以修改有问题的两个线程,即它们不是最终的。然后,您可以重写其run
方法,使得第一版本中,当它完成的信号和信号量第二等待被释放它即
final Semaphore sem = new Semaphore(1);
Thread t1 = new MyThreadOne(){
{
try{
sem.acquire();
}
catch(InterruptedException e){ log(...); }
}
@Override
public void run(){
super.run();
sem.release();
}
};
Thread t2 new MyThreadTwo(){
@Override
public void run(){
try{
sem.acquire();
}
catch(InterruptedException e){ log(...); }
super.run();
}
};
t1.start();
t2.start();
你可能想通过信号开始到构造,如果之前你示例需要它,或者以其他方式访问它。请注意0在这里必须是final
,因为它在匿名内部类中被引用,并且Java不会正确执行闭包。
相关问题
- 1. 如何不定期更改信号值?
- 2. 再入信号量
- 3. 如何将输入信号更改为systemverilog中的参数?
- 4. GtkEntry文本更改信号
- 5. QtPropertyBrowser和值更改信号
- 6. 更改信号中的ReferenceLoopHandlingR
- 7. Python:构建可重入信号量(结合RLock和信号量)
- 8. 如何更改用户输入变量?
- 9. 如何加速iPhone DTMF信号拨号
- 10. 如何更改CD ROM信?
- 11. 等待/信号(信号量)如何实现伪代码“工作”?
- 12. 更改信号量的所有权/权限
- 13. 在Fortran中捕获信号时更改变量值
- 14. 如何更改端口号
- 15. Java - 如何修改信号量实现,以便公平
- 16. 如何更改SWT树加号/减号图标
- 17. Ruby信号量?
- 18. 如何使用numpy更改pyaudio中的信号幅度?
- 19. 更改电话号码发短信
- 20. iPad方向更改返回SIGABRT信号
- 21. 通过QPushButton信号更改QLabel setPixmap()
- 22. 更改信号插槽连接顺序
- 23. django信号与批量删除/更新
- 24. 如何用声卡测量5V信号
- 25. 如何实现全局信号量类
- 26. 如何实现分布式信号量?
- 27. Atmega测量的信号频率如何?
- 28. 如何取回的信号量
- 29. Golang:如何超时信号量?
- 30. Linux进程间可重入信号量
你想看看join()做了什么或者你想让你的线程等待其他线程完成吗? –
@Kamen,我想停止线程,直到其他不会结束 –
你有t1和t2。 t1应该等待t2完成。所以在t1应该等待的地方写下t2.join()就是这样。执行将停止在该行,直到t2完成。 –