【发布时间】:2012-11-17 05:44:39
【问题描述】:
我正在制作一个 2 人视频游戏,并且对手的位置在线程上更新,因为它有一个持续监听的套接字。我要分享的是位置和旋转。
因为它是一个电子游戏,我不希望主线程被阻塞(或者只是尽可能少的时间),我不希望性能受到影响。因此,从我所看到的分享这些信息来看,正常的做法是
class sharedinfo
{
public synchronized read();
public synchronized write();
}
但这会阻塞主线程中的读取(与绘制视频游戏相同),直到写入三个值(或将来写入更多信息),而且我读过同步非常昂贵(还有一点很重要,说这个游戏也是安卓版的,所以性能很重要)。
但我在想也许在 AtomicReference 中包含 sharedInfo 并消除 synchronized 会使其更有效,因为它只会在引用本身被更新时停止(写入不存在,我会创建一个新对象并将它在 atomicreference 上),他们还说 atomic* 使用硬件操作并且比同步更有效。
你怎么看?
【问题讨论】:
标签: java android multithreading synchronized atomicreference