此類屬於原子並發包,可以對引用型別進行原子無鎖操作
構造方法
//保證可見性和禁止指令重排序
private
volatile v value;
/** * 用給定的物件創造乙個引用原子型別
** @param initialvalue the initial value
*/public
atomicreference
(v initialvalue)
/** * 創造乙個給定值為null的引用原子
*/public
atomicreference()
重要方法
/**
* 得到當前操作的物件
** @return the current value
*/public
final v get()
/** * 設定1當前操作物件
** @param newvalue the new value
*/public
final
void
set(v newvalue)
/** *
* 如果當前值和預期值相等,就更新新值
* @param 預期值
* @param 更新值
* @return 當前值和預期值相等就返回true,否則返回fasle
*/public
final
boolean
compareandset
(v expect, v update)
/** *
* 原子設定更新
* @param newvalue the new value
* @return 先前值
*/@suppresswarnings
("unchecked"
)public
final v getandset
(v newvalue)
案例分析
用atomicreference實現自旋操作
/**
* 描述: 自旋鎖
*/public
class
spinlock
}public
void
unlock()
public
static
void
main
(string[
] args)
catch
(interruptedexception e)
finally}}
; thread thread1 =
newthread
(runnable)
; thread thread2 =
newthread
(runnable)
; thread1.
start()
; thread2.
start()
;}}
併發程式設計之併發佇列
jdk 中提供了一系列場景的併發安全佇列。總的來說,按照實現方式的不同可分為阻塞佇列和非阻塞佇列,前者使用鎖實現,而後者則使用cas 非阻塞演算法實現。1 非阻塞佇列 concurrentlinkedqueue concurrentlinkedqueue是無界非阻塞佇列,內部使用單項鍊表實現 其中有...
併發程式設計之程序
在python中大部分情況需要使用多程序。python提供了multiprocessing。multiprocessing模組用來開啟子程序,並在子程序中執行我們定製的任務 比如函式 該模組與多執行緒模組threading的程式設計介面類似。multiprocessing模組的功能眾多 支援子程序 ...
Socket程式設計之併發模型
所謂併發模型,就是當伺服器端accept乙個新的連線請求後,便開乙個新執行緒,處理與客戶端的連線。併發模型簡單易用,適用於客戶端的併發連線請求不多的應用中,但併發請求過多便不適用。示例 如下 完整示例 可參看 迴圈接受客戶端連線請求,請求到達到,開新執行緒與客戶端互動 while 1 socketi...