執行緒安全與非執行緒安全的區別

2021-09-25 03:09:39 字數 1071 閱讀 6837

執行緒安全:是多執行緒訪問時,採用加鎖機制,當乙個執行緒訪問該類的某個資料時,進行保護,其他執行緒不能進行訪問直到該執行緒讀取完,其他執行緒才可使用。不會出現資料不一致或者資料汙染。

非執行緒安全:是多執行緒訪問時,不提供資料訪問保護,有可能出現多個執行緒先後更改資料造成所得到的資料是髒資料。所得資料可能不一致

區別:非執行緒安全是指多執行緒操作同乙個物件可能會出現問題。而執行緒安全則是多執行緒操作同乙個物件不會有問題

使用情況:如果是多個執行緒操作同乙個物件,那麼使用執行緒安全的vector;否則,就使用效率更高的arraylist

執行緒安全是通過執行緒同步控制來實現的,也就是synchronized關鍵字;非執行緒安全通過非同步實現

synchronized可以用在方法上也可以使用在**塊上,其中方法例項方法和靜態方法,被鎖的物件類的例項物件類物件。而使用在**塊上分別是例項物件class物件任意例項物件object被鎖的物件類的例項物件類物件例項物件object注意:如果鎖的是類物件的話,儘管new多個例項物件,但他們仍然是屬於同乙個類依然會被鎖住,即執行緒之間保證同步關係。

arraylist是非執行緒安全的,vector是執行緒安全的

hashmap是非執行緒安全的,採用非同步處理,效能更高,在jdk1.2之後推出,使用的更多;

hashtable是執行緒安全的,採用同步處理,效能較低,在jdk1.0是推出

stringbuilder是非執行緒安全的,stringbuffer是執行緒安全的

PHP執行緒安全與非執行緒安全的區別

原文 windows版的php從版本5.2.1開始有thread safe 執行緒安全 和none thread safe nts,非執行緒安全 之分,這兩者不同在於何處?到底應該用哪種?這裡做乙個簡單的介紹。因此,如果是使用isapi的方式來執行php就必須用thread safe 執行緒安全 的...

PHP 執行緒安全與非執行緒安全版本的區別

windows版的php從版本5.2.1開始有thread safe 執行緒安全 和none thread safe nts,非執行緒安全 之分,這兩者不同在於何處?到底應該用哪種?這裡做乙個簡單的介紹。從2000年10月20日發布的第乙個windows版的php3.0.17開始的都是執行緒安全的版...

PHP執行緒安全和非執行緒安全的區別

windows版的php從版本5.2.1開始有thread safe。這兩者不同在於何處?到底應該用哪種?這裡做乙個簡單的介紹。從2000年10月20日發布的第乙個windows版的php3.0.17開始的都是執行緒安全的版本,這是由於與linux unix系統是採用 多程序的工作方式不同的是win...