哲學(xué)家進(jìn)餐問(wèn)題——Java語(yǔ)言實(shí)現(xiàn)
哲學(xué)家進(jìn)餐問(wèn)題是一個(gè)多線程運(yùn)用的經(jīng)典例子,涉及到線程同步/互斥,臨界區(qū)訪問(wèn)問(wèn)題以及一個(gè)避免死鎖的解決方法。
有五個(gè)哲學(xué)家繞著圓桌坐,每個(gè)哲學(xué)家面前有一盤(pán)面,兩人之間有一支筷子,這樣每個(gè)哲學(xué)家左右各有一支筷子。
哲學(xué)家有2個(gè)狀態(tài),思考或者拿起筷子吃飯。如果哲學(xué)家拿到一只筷子,不能吃飯,直到拿到2只才能吃飯,并且一次只能拿起身邊的一支筷子。一旦拿起便不會(huì)放下筷子直到把飯吃完,此時(shí)才把這雙筷子放回原處。
如果,很不幸地,每個(gè)哲學(xué)家拿起他或她左邊的筷子,那么就沒(méi)有人可以吃到飯了。這就會(huì)造成死鎖了。。這是需要堅(jiān)決杜絕的,正如操作系統(tǒng)的死鎖問(wèn)題。
標(biāo)簽:
Java
家
多線程
語(yǔ)言
上傳時(shí)間:
2016-06-29
上傳用戶:戀天使569