python 多個執行緒共享資料 沒有鎖的情況

2021-08-20 19:18:27 字數 1173 閱讀 1512

from time import sleep

from threading import thread, lock

class

account

(object):

def__init__

(self):

self._balance = 0

self._lock = lock()

defdeposit

(self, money):

# 先獲取鎖才能執行後續的**

self._lock.acquire()

try:

new_balance = self._balance + money

sleep(0.01)

self._balance = new_balance

finally:

# 這段**放在finally中保證釋放鎖的操作一定要執行

self._lock.release()

@property

defbalance

(self):

return self._balance

class

addmoneythread

(thread):

def__init__

(self, account, money):

super().__init__()

self._account = account

self._money = money

defrun(self):

self._account.deposit(self._money)

defmain

(): account = account()

threads =

# 建立100個存款的執行緒向同乙個賬戶中存錢

for _ in range(100):

t = addmoneythread(account, 1)

t.start()

# 等所有存款的執行緒都執行完畢∫

for t in threads:

t.join()

print('賬戶餘額為: ¥%d元' % account.balance)

if __name__ == '__main__':

main()

6 多個執行緒的共享資料

1 方式 1,如果每個執行緒執行的 相同,可以使用同乙個runnable物件,這個runnable物件中有那個共享資料,例如,賣票系統就可以這麼做。2,如果每個執行緒執行的 不同,這時候需要用不同的runnable物件,例如,設計4個執行緒。其中兩個執行緒每次對j增加1,另外兩個執行緒對j每次減1,...

多個執行緒間如何共享資料?

如果每個縣城執行的 相同,可以使用同乙個runnable物件,這個runnable物件中有那個共享資料。將共享資料封裝成另乙個物件,然後將這個物件逐一傳遞給各個runnable物件,每個執行緒對共享資料的操作方法也分配到那個物件身上,這樣容易實現針對資料進行各個操作的互斥和通訊。將runnable物...

java併發 多個執行緒間共享資料

先看乙個多執行緒間共享資料的問題 設計四個執行緒,其中兩個執行緒每次對data增加1,另外兩個執行緒每次對data減少1。從問題來看,很明顯涉及到了執行緒間通資料的共享,四個執行緒共享乙個data,共同操作乙個data。我們先把上面這個問題放在一邊,慢慢分析多個執行緒之間共享資料的一些情況,從最簡單...