歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Java中多個線程訪問共享數據的方式有哪些

Java中多個線程訪問共享數據的方式有哪些

日期:2017/3/1 10:34:30   编辑:Linux編程

多個線程對共同數據的訪問的實現,要根據情況而定

(1)當訪問共同的代碼的時候:可以使用同一個Runnable對象,這個Runnable對象中有這個共享數據,比如賣票系統就可以這麼做。或者這個共享數據封裝在一個對象當中,然後對這個對象加鎖,也可以實現數據安全訪問。

(2)當各個線程訪問的代碼不同時:這時候要使用不同的Runnable對象,有兩種實現方式:

a)將共享數據封裝在另一個對象當中,然後將這個對象逐一的轉遞給各個Runnable對象。操作數據的方法也放進這個對象當中。這樣容易實現各個線程對這個數據的同步和共享。

b)將Runnable對象作為某一個類中的內部類,共享數據作為這個外部類的成員變量,每個線程對共享數據的訪問也交給外部類的方法,比便對共享數據的互斥和通信。Runnable對象調用外部類的操作這個共享數據的方法。

還有一種方式是a)和b)的結合實現,把共享數據封裝到一個對象當中去,這個對象也實現對這個共享數據的操作,這個對象作為外部類的成員變量。然後再創建多個Runnable對象做為內部類,操作這個對象。

總結:對於要是下同步互斥的代碼要放在不同的方法中,並且放在同一個對象當中,容易實現互斥和通信,並且也有利於日後的維護。這樣思路也很清晰。

Copyright © Linux教程網 All Rights Reserved