簡介:多線程通信:使用AtomicInteger等原子變量有多好?爲什麼沒有AtomicFloat?
我想創建一個多線程的Android應用程序。我的問題是線程之間的溝通。我讀過關於線程之間的通信,並且我遇到了像Looper/Handler設計這樣的東西,這似乎與AtomicInteger非常相關,Atomic變量等。現在,我使用AtomicInteger作爲通信,但由於我對Java的經驗不是很豐富,我不確定在我的情況下這是否不好,或者針對我的特定目的是否有更好的解決方案。當我注意到我實際上需要像AtomicFloat這樣的東西時,我也對我的方法有點懷疑,但它不存在。我覺得我很想念這個概念。我也發現你可以讓自己成爲一個AtomicFloat,但我只是不確定我是否在正確的路上或者是否有更好的技術。
問題: 可以使用Atomic Variables並且爲我的特定目的實現AtomicFloat(如下所述)還是有更好的方式來處理通信?使用AtomicVariables迄今爲止應用的
用途/建築:
我有4個線程有以下目的:
1.SensorThread:讀取傳感器數據和AtomicVariables保存最近一次的值如
AtomicFloat gyro_z,AtomicFloat gyro_y, ...
2.CommunicationThread:與PC通信,解釋來自套接字的命令並設置應用的狀態AtomicInteger: AtomicInteger狀態;
3.UIThread:從 AtomicFloat gyro_z,AtomicFloat gyro_y,
4.ComputationThread顯示當前的傳感器值:使用傳感器值AtomicFloat gyro_z,AtomicFloat gyro_y, ...
和狀態AtomicInteger state
進行計算並通過USB發送命令。
這聽起來像你可以做一個易變的浮動。 – assylias
請看看這篇文章: http://stackoverflow.com/questions/5505460/java-is-there-no-atomicfloat-or-atomicdouble –
@Perroloco,我讀了,但較低的兩個回覆他們說那個人真的很少見。對我來說,AtomicFloat應該存在是非常合乎邏輯的。那爲什麼我質疑我對他們的使用 –