my_asker 2008-12-16 17:22
浏览 569
已采纳

Java多线程同时启动或执行

例如一个赛车游戏,里面有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毫秒的回答....

  • 写回答

8条回答 默认 最新

  • iteye_158 2008-12-22 03:37
    关注

    其实 你没必要让线程一起启动,除非你有这么多的CPU 理论上是不行的。

    你在乎的就是时间,靠时间去判断,你可以在线程启动的时候设置一个开始时间,结束的时候一个结束时间。当然你的显示方式要能欺骗玩游戏的人。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序