這是我昨天練習的多執行緒同步問題
解決方法一:輪詢
import threading
import time
count=500
#全域性變數
user_input1=input('請輸入金額:') #終端輸入消費金額
user_input2=input('請輸入消費金額:')
flag=false
#這裡設定標識位,為false時表示空閒
defpos1
():global count,user_input,flag
while flag: #flag==true 等待
time.sleep(0.01) #睡眠等空閒再喚醒
flag=true
#到這裡表示標識位為false 此時把該標識位設定為true
if int(user_input1)<=500: #判斷輸入金額是否超過餘額
count=count-int(user_input1)
print('消費成功')
else:
print('你的餘額不足')
#操作完成 把標識位重新設定成false
flag=false
print('餘額為%d'%count)
defpos2
():global count,user_input,flag
while flag:
time.sleep(0.01)
flag=true
if int(user_input2)<=count:
count=count-int(user_input2)
print('消費成功')
else:
print('你的餘額不足')
flag=false
print('餘額為%d'%count)
t1=threading.thread(target=pos1) # 建立子執行緒,並在指定函式pos1執行
t1.start()
t2=threading.thread(target=pos2) #建立子執行緒,並在指定函式pos2執行
方式二:加鎖
import threading
import time
count=500
#總餘額
mutex=threading.lock() #建立鎖
defpos1
():global count,flag
mutex.acquire() #上鎖
if count>=400: #判斷消費金額是否超過餘額
count-=400
print('消費成功')
else:
print('你的餘額不足')
mutex.release() #解鎖
print('餘額為%d'%count)
defpos2
():global count,flag
mutex.acquire()
if count>=300:
count-=300
print('消費成功')
else:
print('你的餘額不足')
mutex.release()
print('餘額為%d'%count)
t1=threading.thread(target=pos1) #建立子執行緒,並在指定函式pos1執行
t1.start()
t2=threading.thread(target=pos2) #建立子執行緒,並在指定函式pos2執行
多執行緒 兩種方式建立執行緒
第一種方式 繼承thread類 public class threaddemo extends thread catch interruptedexception e if s 50 public static void main string args 第二種方式 實現runnable介面 pub...
多執行緒兩種實現方式
public class testthread1 extends thread public static void main string args 執行結果如下 可見執行緒由cpu隨機排程的。public class testthread2 extends thread override pub...
實現多執行緒的兩種方式
一 什麼是執行緒?定義 執行緒是程序中的乙個執行單元,負責當前程序中程式的執行,乙個程序中至少有乙個執行緒。乙個程序中是可以有多個執行緒的,這個應用程式也可以稱之為多執行緒程式。簡而言之 乙個程式執行後至少有乙個程序,乙個程序中可以包含多個執行緒 二 怎麼實現多執行緒?下面的兩種方式婦孺皆知 1.繼...