例如一个赛车游戏,里面有10辆车,我需要他们[color=blue]同时[/color]动起来,这个同时很重要,要求[color=blue]准确性[/color]非常高,因为只有每辆台车能同时开动,才算公平。
每辆车用一个线程表示,那么,这10个线程如何保证“同时启动、执行、唤醒...等等”的准确性呢?
请各位给出实现或思路,尤其是开发游戏的javaeyer...
[b]问题补充:[/b]
补充一下:
以下方法显然不行:
[code="java"]
new CarThread().start();
new CarThread().start();
new CarThread().start();
...
...
[/code]
有先后顺序的话就保证不了准确性。
[color=gray]----------我要隔开我要隔开----------[/color]
aninfeel所回答的同样有问题:
[quote="aninfeel"]全部车子线程启动后使用wait(),然后使用notifyAll大家一起开动
[code="java"]
class CarThread{
public void run()
{
//大家一起在这里等。
synchronized(waitObj){
waitObj.wait();
}
//开始比赛
..........
}
}
//大家一起跑
waitObj.notifyAll();
[/code]
[/quote]
原因,Object.notifyAll()的javadoc说的很清楚。
[quote="javadoc"]
The awakened threads will compete in the usual manner with any other threads that might be actively competing to synchronize on this object; for example, the awakened threads enjoy no reliable privilege or disadvantage in being the next thread to lock this object.
[/quote]
[b]问题补充:[/b]
继续补充一下:
没有看明白"墓里活人"的100毫秒10毫秒的回答....