我们有2个线程在Java中:线程在Java中与while循环
主题1:
…
public void run()
{
while (Share.COUNTER<8)
Share.COUNTER++;
}
…
线程2:
…
public void run()
{
while (Share.COUNTER>-7)
Share.COUNTER--;
}
…
的问题是:哪个线程将是最初由while循环终止? 第二个问题是: 是否有保证线程将终止运行方法? 你能帮我回答这个问题吗?因为Java中的线程对我而言是新的。
如果'Share.COUNTER'没有同步,那么行为是不确定的。 –
首先,您可能会获得并发访问修改,因为您可能同时访问同一个属性。要回答你的问题,你不能保证哪一个会先完成。如果你要运行它,有时线程1将是第一个,其他线程2将是第一个。这是一个机会游戏 – Draken
这取决于哪个线程将被系统所青睐。哪个线程将首先终止是不可预知的,并且不保证其中一个线程将结束(并因此结束另一个线程)。 – Massimo