我正在一个类的两个实例之间制作一个Pictionary游戏。一个实例是主机(套接字的主机),另一个实例是访客。
在程序执行过程中,几个Swing计时器被初始化并运行。这些定时器需要在两个设备上以相同的速度运行。同步两个设备的最佳方法是什么?
一个简短的例子-计时器必须倒计时60秒(在60秒之后->
timer.stop()
,每秒钟更新JLabel
的秒数)。我是否需要通过套接字发送
JLabel
的每个更新,而不在 guest 上初始化Timer或在两个设备上都初始化Timer,而是同步timer.start()
(忽略连接的延迟) 最佳答案
连接的延迟几乎可以肯定会使两个JVM中的任何时序偏差相形见,,尤其是因为总共只涉及60个计时器事件。因此,我建议在倒计时期间不进行网络同步。
如果两个参与者之一由于不可控制的因素(例如GC,线程调度,虚拟内存交换等)而暂停,则可能会出现特殊情况。如果您想涵盖这些细节,则需要双向同步,因为这些事件可能在任一端发生。