一:在多執行緒中用到鎖的地方非常少。因為沒有什麼共享的地方需要用到鎖
鎖就是要用在共享的資料上面。屬於單例的資料。如果是多例的資料,則不存在會亂的情況。
舉例:在多個執行緒同時寫同時去寫日誌檔案的時候,會寫亂。只是沒有順序可言。
加鎖的方式:1- synchronized ;2- lock介面
用鎖的多執行緒場景一般分 2 種:
在tomcat的執行緒池多執行緒中(我的意思是說針對每次客戶請求在你業務的時候使用鎖,例如電商專案的超賣超扣 / 專案介面的冪等性)
二:一般使用最多的就是synchronized關鍵字鎖,因為不用自己擔心死鎖的情況,也不用自己去釋放鎖,而且顆粒度也可以很小
public
class
abssubjectserviceimpl
extends
abssubjectservice
}
三:threadlocal也是乙個很關鍵的類。在多執行緒,或者是多程序中都會使用到
private
final
static threadlocal
userthreadlocal =
newthreadlocal
<
>()
;// private final static threadlocaluserthreadlocal = new inheritablethreadlocal<>();
/** * 設定當前使用者
*/public
void
setcurrentuser
(user user)
/** * 從本地執行緒中取當前使用者
*/public user getcurrentuser()
return user;
}
以上就是我用 threadlocal 物件作為實際專案中的使用。相當於一次請求(tomcat執行緒)的一次上下文,在沒使用 remove() 方法之前都是可以一直獲取到。
注意:使用 threadlocal 時候,如果是單次執行緒使用執行緒會自己銷毀,可以不需要 remove() 方法,如使用的是執行緒池方式控制線程,則使用 threadlocal 物件時候,一定要記得 在最後 remove() 掉,不然執行緒池的復用機制會導致 threadlocal 中資料錯亂;
後感:我一般喜歡成為 threadlocal 為上下文
在安全框架 shiro / spring security 儲存使用者的資訊也是使用 threadlocal 物件。
多執行緒的鎖
由於併發的問題,需要加鎖 當多個執行緒同時進行任務時,為了保證不會有多個執行緒同時對同乙個資料進行操作造成不可預料的後果,所以有了鎖的概念,我們通過鎖來使多執行緒任務更加安全。lock threading.lock cond threading.condition lock lock 多執行緒的鎖例...
python多執行緒鎖 python的多執行緒程式設計之鎖
1 背景概述 在python中,要保證資料的正確性,並且自己對資料進行控制,對資料進行加鎖並且自己釋放鎖。多執行緒的主要目的為了提高效能與速度,用在無關的方向是最好的,例如在使用爬蟲的時候,可以使用多執行緒來進行爬取資料,因為在這些執行緒之間沒有需要共同操作的資料,從而在這個時候利用是最好的。如果需...
多執行緒,執行緒鎖,例項
多執行緒可以分多條執行緒,同時執行程式,但也因此出現一些問題,通過執行緒鎖可以解決 包子例項 廚師做包子,顧客吃包子,多餘50個包子廚師停止做包子,包子為零顧客停止吃包子,當廚師做到10個後顧客可以吃包子 顧客類 customer.class public class customer implem...