3 回答

TA貢獻(xiàn)1038條經(jīng)驗(yàn) 獲得超227個(gè)贊
多線程執(zhí)行(由線程調(diào)度器管理)是無序交替(無規(guī)律)。正常邏輯包子鋪生產(chǎn),吃貨類消費(fèi),它們所用的是同一批包子。你現(xiàn)在的代碼就好像,包子鋪,吃貨有各自的包子,但都只對第三方(主線程)運(yùn)過來(new)的包子感興趣。三個(gè)線程地位相等,然后搶著執(zhí)行(線程啟動(dòng)順序不代表執(zhí)行順序)。為確保成功消費(fèi)包子,需要明確各線程執(zhí)行體得到的結(jié)果有序,即生產(chǎn)(包子鋪)包子 -> 運(yùn)輸(主線程)->消費(fèi)(吃貨)。因此需要線程通信協(xié)調(diào),讓各線程執(zhí)行流有序,有了鎖解決資源共享能不能用的問題,有了同步解決數(shù)據(jù)一致性問題,三個(gè)線程的通信也依賴于那個(gè)主線程包子實(shí)例,實(shí)例notify與wait方法則告訴其它線程該對象鎖是否解除,當(dāng)前線程是否需要阻塞,來控制線程間執(zhí)行流。換而言之,如果你不傳包子對象,相當(dāng)于兩個(gè)子線程,各自玩自家的包子,與主線程包子無關(guān),那也沒必要用到鎖,用到同步,更不需要多線程了。
添加回答
舉報(bào)