public
class
test
public
void
inc(
)catch
(interruptedexception e)
i.incrementandget()
;}public
static
void
main
(string[
] args)
throws interruptedexception
}}
123
4567
8910
atomic的型別
基本型別
atomicboolean:以原子更新的方式更新boolean;
atomicinteger:以原子更新的方式更新integer;
atomiclong:以原子更新的方式更新long;
引用型別
atomicreference : 原子更新引用型別
atomicreferencefieldupdater :原子更新引用型別的字段
atomicmarkablereference : 原子更新帶有標誌位的引用型別
陣列
atomicintegerarray:原子更新整型陣列裡的元素。
atomiclongarray:原子更新長整型陣列裡的元素。
atomicreferencearray:原子更新引用型別陣列裡的元素。
字段
atomicintegerfieldupdater:原子更新整型的字段的更新器。
atomiclongfieldupdater:原子更新長整型欄位的更新器。
atomicstampedreference:原子更新帶有版本號的引用型別
注意事項,如果使用不當會破壞了原子性
錯誤**:
public
class
test
catch
(interruptedexception e)
j=k;
}public
static
void
main
(string[
] args)
throws interruptedexception
thread.
sleep
(2000);
system.out.
println
(test.j);}
}
方法並不具有原子性,執行緒裡會破壞了原子性,在bad上加synchronized,問題解決 原子性atomic與非原子性natomic
原子操作是不可分割的操作,在原子操作執行完畢之前,其不會被任何其它任務或事件中斷。在單處理器系統 uniprocessor 中,能夠在單條指令中完成的操作都可以認為是 原子操作 因為中斷只能發生於指令之間。某些cpu指令系統中引入了test and set test and clear等指令產生臨界...
執行緒安全性 原子性 atomic
定義 當多個執行緒訪問某個類時,不管執行時環境採用何種排程方式,或者這些程序將如何交替執行,並且在主調 中不需要任何額外的同步或協同,這個類都能表現出正確的行為,那麼就稱這個類時安全的 執行緒安全性,主要體現在三個方面,分別是 原子性 提供了互斥訪問,同一時刻只能有乙個執行緒對它進行訪問 可見性 乙...
go 原子操作 atomic的使用
go語言提供的原子操作都是非侵入式的,它們由標準庫 包sync atomic中的眾多函式代表。我們呼叫sync atomic中的幾個函式可以對幾種簡單的型別進行原子操作。這些型別包括int32,int64,uint32,uint64,uintptr,unsafe.pointer,共6個。這些函式的原...