java多線程的特性

java線程安全指的是什麼?有三個指標java

1.有序性程序員

2.原子性面試

3.可見性安全

下面一個一個的說:順序是從簡單到複雜性能優化

1.所謂的有序性就是指程序員寫的源文件和計算機讀取的編譯後的class文件的語句的順序是一致的。栗子就不舉了。好吧當我寫到「不舉」的時候,有一種很污的畫面浮如今腦海裏面。總之有序性就是指計算機執行代碼的時候和程序員寫代碼的邏輯是同樣的。那位看官問了,還能不同嗎?萬能的計算機在編譯代碼的時候認爲他會對你寫的代碼進行優化,好比說臭名昭著的指令重排序。多線程

2.原子性併發

這個指的是一組代碼語句的了,對於一組代碼要麼所有成功,要麼所有失敗,不會有中間狀態。我特麼的今天早晨去面試,鬼打牆了,多線程和事務在我腦子裏面打架了,shit,因此我如今在這裏寫這編博客,爲的是深刻理解一下多線程的特性,fuck.性能

常見的問題就是read --modify--write.vilitile的字段可以知足的是可見性,可是不能知足的是原子性。我想緊緊地記住。優化

3.可見性線程

多個線程共同訪問一個數據的時候,一個線程對於該數據的修改應該馬上對其餘線程可見。

年紀大了,並且好久好久沒有面試了,所謂的將軍百戰死,壯士十年歸吧,過久沒有上戰場的人,聽到槍聲渾身發抖說的就是我,今天去面試丟人丟大發了。這麼基礎的問題都忘記了,很久很久沒有看這方面的知識了。若是你不用的話真的會忘記黎明的天空還會有一顆金星。

理解着記憶就是:

當我寫下上面那句話的時候個人腦海裏還在有事務的呼喚,爲何?fuck!

程序的併發安全性有多是一句的,有多是多個語句組合的,因爲計算機自高自大自滿的特性,當你把源碼教給他的時候,若是補叮囑兩句的話他會自做主張的進行重排序,所謂的性能優化。因此第一個特性就是有序性了;

因爲cpu cache mainMemory中間存在着時間差,那麼修改以後的數據沒法馬上刷新主存,那麼問題就來了必需要消除這種延時,因此咱們要保證他的可見性;

而原子性呢就是要求他的一組修改不能有一部分紅功一部分失敗,實際上是2的組合~~ act as one sentense.

 

來個硬廣:本人的我的博客

http://httpshome.com

相關文章
相關標籤/搜索