多執行緒 16 併發同步

2021-09-26 15:17:43 字數 1116 閱讀 5875

併發:同乙個物件多個執行緒同時操作,比如購買同一車次票。一定涉及到併發就會導致資料不準確問題,比如同一張票被多個人買到了,這稱為執行緒不安全。

那怎麼使執行緒安全呢,比如只一台電腦,大家都想用怎麼辦,排隊。跟據演算法誰先用誰後用,保證乙個 人上來用,其他人等著,等這個人用完了下一人用,還是用乙個時間點乙個執行緒執行緒在操作乙個資源點,這樣是保證了執行緒安全,這就是佇列。怎麼樣才讓別的執行緒的知道這個資源被占用了,那就是。比如在外面的開房,這個房卡就是鎖,表示資源已經占用了。

有了佇列和鎖就保證了執行緒的安全性,多執行緒的叫做執行緒同步

比如下圖:兩個用電腦,比如隨機選擇乙個人去用電腦,這個人進去後就把門鎖上乙個在裡面,也不用擔心別人打擾他,等它用完以後,別人就可以去用 。

這個鎖機制已經寫好了synchronized關鍵字,一但加入鎖機制會引起效能的問題,乙個執行緒進來了,另乙個執行緒要等待。

這個synchronized是鎖物件,鎖資源,如果是乙個物件就鎖物件,如果操作的成員方法那就鎖this,如果是乙個靜態方法,那就鎖的它的模子,也就是class物件。

比如有個方法,方法有a屬性和b屬性,是同乙個資源,不同的屬性,併發主要是修改資源,修改資源會出錯,如果是簡單的讀取是不會出現錯誤的,如果a屬性只涉及到讀取不修改,b屬性涉及到修改,如果把synchronized加在方法上,把方法鎖上了,那ab就被你占有了,別人想訪問a就不行了,只能等。所以若將乙個大的方法宣告為synchronized將會大大影響效率,提高效率只能設定synchronized塊。

多執行緒 併發 同步

對比同步塊和同步方法,理解一下同步塊可以力度更小的鎖定資源。在力度更小的鎖定資源時我們盡可能的提公升它的效能。package com.sxt.syn 執行緒安全 在併發時保證資料的正確性 效率盡可能高 synchronized 1 同步方法 2 同步塊 public class synblockte...

同步,多執行緒 ,多執行緒方式實現併發。

io請求幾乎不佔cpu的。同步請求相當於排隊買東西,乙個卡主了,其他的都結不了賬了。執行緒並不是越多越好,如果他特別多還不如同步高,所以對執行緒要有個限制,所以就出現了執行緒池,執行緒池在python3裡才有的,python2裡沒有的。建立程序的話是耗費很多資源的,建立執行緒是幾乎不耗費資源的。建立...

C 筆記16 多執行緒和同步

同步多執行緒處理模式 什麼是程序 執行緒 建立執行緒var task newtask 宣告執行緒之後並不會馬上執行。task.start 執行執行緒int times 5000 var task1 newtask var task2 newtask task1.start task2.start t...