我在当前的Android测试中遇到了一个小的竞态条件。我想要的是:
(Andy boy,我想念Ada基于会合的多任务处理)
回答mat的问题:
- T1:启动线程T2
- T2:做一些事情
- T1:与T2合并
- T1:启动线程T2
- T1:与T2合并(结果是无操作)
- T2:做一些事情
(Andy boy,我想念Ada基于会合的多任务处理)
回答mat的问题:
if (this.thread != null && this.thread.isAlive ())
{
this.stop.set (true);
try
{
this.thread.join (1000);
}
catch (final InterruptedException Exception)
{
android.util.Log.w (Actor.TAG, "Thread did not want to join.", Exception);
} // try
} // if
就像我之前说的一样:当线程还没有开始时,它是无操作的。
Thread.join()
等待被加入的线程结束(除非你设置了非常短的超时时间)。你确定错误不是出在其他地方吗? - Matthread != null
是为什么?你确定你正在进入那个if
语句吗?你的第二个线程在开始处理之前是否检查了stop.set(true)
设置的任何内容? - Mat