題目如下:
在生產(chǎn)者/消費(fèi)者模型中,生產(chǎn)者Producer負(fù)責(zé)生產(chǎn)數(shù)據(jù),而消費(fèi)者Consumer負(fù)責(zé)使用數(shù)據(jù)。多個(gè)生產(chǎn)者線程會(huì)在同一時(shí)間運(yùn)行,生產(chǎn)數(shù)據(jù),并放到內(nèi)存中一個(gè)共享的區(qū)域。期間,多個(gè)消費(fèi)者線程讀取內(nèi)存共享區(qū),消費(fèi)里面的數(shù)據(jù)。
要求:
1. 針對(duì)上面的場(chǎng)景,請(qǐng)創(chuàng)建2個(gè)類,一個(gè)叫Producer,一個(gè)叫Consumer.
2. Producer類繼承Thread類,并實(shí)現(xiàn)把數(shù)據(jù)放到內(nèi)存共享區(qū)的功能,這個(gè)功能要求是線程安全的。在個(gè)Producer類中的run方法中,循環(huán)20次,每次把一個(gè)整數(shù)放到內(nèi)存共享區(qū)中。
3. Consumer類也繼承Thread類,并實(shí)現(xiàn)在沒有沖突的情況下,從內(nèi)存共享區(qū)中獲取數(shù)據(jù),并在標(biāo)準(zhǔn)輸出設(shè)備中打印輸出。輸出的格式為:Consumer thread X retrieved integer Y.
4. 最后,創(chuàng)建一個(gè)main class,創(chuàng)建10個(gè)Procuder線程和4個(gè)消費(fèi)者線程并啟動(dòng)這些線程。
5. 要求有效代碼行數(shù)盡量少,最好不超過100行。
我大概的做了一下,以下是我的代碼實(shí)現(xiàn):
一. 消費(fèi)者類






































二. 生產(chǎn)者類




























三. 線程通信類





















































































四. 測(cè)試類





















































近來發(fā)現(xiàn),去看以前的代碼,都覺得有點(diǎn)傻傻滴,現(xiàn)在的話如果去實(shí)現(xiàn)大抵會(huì)有所改進(jìn),我在進(jìn)步中嗎?啊哈。