java多線(xiàn)程詳解 Java多線(xiàn)程同步內(nèi)部如何實(shí)現(xiàn)的?
Java多線(xiàn)程同步內(nèi)部如何實(shí)現(xiàn)的?//解決方案-1設(shè)置3個(gè)鎖,然后將鎖應(yīng)用于所有線(xiàn)程(它涉及同步等待通知,這很麻煩,略)解決方案-2設(shè)置3個(gè)全局共享的信號(hào)標(biāo)記(信號(hào)燈)3個(gè)子線(xiàn)程分別占用標(biāo)記1 2 3
Java多線(xiàn)程同步內(nèi)部如何實(shí)現(xiàn)的?
//解決方案-1設(shè)置3個(gè)鎖,然后將鎖應(yīng)用于所有線(xiàn)程(它涉及同步等待通知,這很麻煩,略)
解決方案-2設(shè)置3個(gè)全局共享的信號(hào)標(biāo)記(信號(hào)燈)3個(gè)子線(xiàn)程分別占用標(biāo)記1 2 3
主線(xiàn)程輪詢(xún)/等待
]//解決方案-2實(shí)現(xiàn)如下:
靜態(tài)布爾T1uuUdone=false
靜態(tài)布爾t2uUdone=false
靜態(tài)布爾t3uUdone=false=false
//t1-----run(){。。。。。。。。。。。。t1udone=true}
//T2,3:同樣地,省略
main(){……
start t1
start T2
start T3
//輪詢(xún)或等待
while(true)
if(t1) Done&;T2 Done&;T3 Done)break
else螺紋屈服強(qiáng)度
()]//或線(xiàn)程。睡眠(xxxxx)--如果子線(xiàn)程運(yùn)行超過(guò)100ms,考慮
//polling結(jié)束,主線(xiàn)程繼續(xù)工作
}//main end
玩得開(kāi)心