併發程式設計之AtomicReference

2021-10-05 12:11:40 字數 1654 閱讀 2258

此類屬於原子並發包,可以對引用型別進行原子無鎖操作

構造方法

//保證可見性和禁止指令重排序

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...