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 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3