簡體   English   中英

java - 在線程之間共享數據 - 原子引用或同步

[英]java - sharing data between threads - atomicreference or synchronize

我正在制作一個2人的視頻游戲,並且對手的位置在一個線程上得到更新,因為它有一個持續監聽的套接字。 我想分享的是位置和輪換。

由於它是一個視頻游戲,我不希望主線程被阻止(或者只是最短的時間),我不希望性能受到影響。 因此,從我所看到的分享這些信息,正常的事情將是這樣的

class sharedinfo
{
   public synchronized read();
   public synchronized write();
}

但是這會阻止主線程中的讀取(繪制視頻游戲的相同),直到寫入三個值(或者將來寫入更多信息),並且我還讀到同步非常昂貴(也是它)重要的是說這個游戲也適用於Android,因此性能非常重要)。

但我想可能在AtomicReference中使用sharedInfo並消除synchronized會使它更有效率,因為它只會在引用本身被更新時停止(寫入不存在,我會創建一個新對象並將其放在原子引用),他們也說原子*使用硬件操作並且比同步更有效。

你怎么看?

考慮使用隊列,Java有一些很好的並發隊列實現。 在java.util.concurrent中查找BlockingQueue接口,以及實現它的人。 你有機會填寫你甚至沒有考慮過的實施策略。

在你知道之前,你需要傳達的不僅僅是線程之間的位置,而是通過隊列,你可以在那里粘貼不同類型的對象,可能有不同的優先級等。

如果你的代碼中盡可能多地使用接口(比如Queue或BlockingQueue)(即除了構造特定實例的地方之外的任何地方),如果你需要,很容易換出你正在使用的確切類型的Queue不同的功能,或只是想玩。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM