91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

一、設計要求 設計一個模擬仿真“生產者-消費者”問題的解決過程及方法的程序。 主要內容是P、V操作過程的設計與實現。生產消費者問題是操作系統設計中經常遇到的問題。多個生產者和消費者線程訪問在共享內存中的環形緩沖。生產者生產產品并將它放入環形緩沖,同時消費者從緩沖中取出產品并消費。當緩沖區滿時生產者阻塞并且當緩沖區有空時生產者又重新工作。類似的,消費者當緩沖區空時阻塞并且當緩沖區有產品時又重新工作。顯然,生產者和消費者需要一種同步機制以協調它們的工作。 二、系統功能 本程序模擬實現了“生產者-消費者”問題的解決過程,用圖形界面動態演示了P、V操作過程以及生產者、消費者進程之間的工作流程。 本程序使用的算法是典型的P、V操作使用信號量解決“生產者-消費者”問題。 本程序在界面上使用了Java的swing接口函數,用矩形條表示生產者進程中待生產的產品,并設置了三個分區分別表示生產者進程待生產的產品、公共緩沖池中已生產的產品和消費者進程已消費的產品,以動畫的效果動態演示了待生產產品變成消費者進程中已消費產品的過程,以及在這一過程中生產者進程和消費者進程協調工作的過程。在程序運行過程中使用了兩個生產者線程和兩個消費者線程并發工作,并使用了線程隨機休眠的策略,即每個線程在完成一次生產過程或消費過程后隨機休眠1至10秒鐘。這一策略能保證生產者和消費者之間的運行順序被打破,從而產生生產產品和消費產品之間的矛盾(即沒有產品可消費的情況下消費者試圖向公共緩沖池取產品消費、公共緩沖池里的產品已滿的情況下生產者試圖生產產品放入緩沖池)。因為生產者生產產品和消費者消費產品都是隨機的,所以產生的矛盾也是不可預知的,在這種情況下,才能檢驗所使用的算法是否健壯高效。而本程序正是基于這種思想設計出來的,用來模擬生產者消費者問題的解決過程。 本程序在運行時提供友好的交互界面,且操作簡單,在模擬過程中各種情況有相應文字提示,并伴有相應的圖像變化,如:當沒有產品可消費的情況下消費者試圖向公共緩沖池取產品消費,消費者進程阻塞,公共緩沖池隨之變成紅色,文字提示框內顯示warning: it's empty!Consumer is block;當緩沖池已滿而生產者試圖生產產品并向緩沖池放入產品時,生產者進程阻塞,公共緩沖池里的每一個產品變成黃色,問題提示框顯示warning: it's full!Producer is block。整個模擬過程通俗易懂,利于理解,能很好的幫助使用者加強生產者消費者問題的理解。

資源截圖

代碼片段和文件信息

package?frame;

import?java.awt.Color;
import?java.awt.Graphics;

import?javax.swing.JPanel;

public?class?CenterPanel?extends?JPanel{

/**
*?@Fields?serialVersionUID?:?
*/?
private?static?final?long?serialVersionUID?=?1L;

public?CenterPanel()?{
this.setBackground(Color.WHITE);
}

@Override
public?void?paint(Graphics?g)?{
super.paint(g);
g.setColor(Color.gray);
//畫出生產者隊列中的所有產品(不是線程)
for(int?i=0;iame.proList.size();i++)?{
g.fill3DRect(35?i*20+5?200?20?true);
g.drawString(Myframe.proList.get(i)?235?i*20+15);
}

if(Myframe.isFull())?{
//若公共緩沖池已滿,將公共緩沖池里的緩沖區變為黃色
g.setColor(Color.YELLOW);
}
//畫出公共緩沖池中所有緩沖區(不是線程)
for(int?i=0;iame.comList.size();i++)?{
g.fill3DRect(285?i*20+5?200?20?true);
g.drawString(Myframe.comList.get(i)?485?i*20+15);
}


//將畫筆顏色調回灰色
g.setColor(Color.gray);
//?畫出消費者隊列中所有已取得的任務(不是線程)
for?(int?i?=?0;?i?ame.conList.size();?i++)?{
g.fill3DRect(535?i?*?20?+?5?200?20?true);
g.drawString(Myframe.conList.get(i)?735?i*20+15);
}

if(Myframe.isEmpty())?{
//若公共緩沖池為空
g.setColor(Color.red);
g.fill3DRect(285?5?200?200?true);
g.setColor(Color.black);
g.drawString(“Empty“?385?100);
}

}


}

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-01-16?15:16??操作系統課設\
?????目錄???????????0??2018-01-16?15:14??操作系統課設\可執行文件\
?????文件???????12017??2018-01-16?12:29??操作系統課設\可執行文件\ProducerConsumer.jar
?????目錄???????????0??2018-01-16?15:14??操作系統課設\工程項目(源碼)\
?????目錄???????????0??2018-01-16?15:14??操作系統課設\工程項目(源碼)\ProducerConsumer\
?????文件?????????301??2018-01-14?11:26??操作系統課設\工程項目(源碼)\ProducerConsumer\.classpath
?????文件?????????392??2018-01-14?11:32??操作系統課設\工程項目(源碼)\ProducerConsumer\.project
?????目錄???????????0??2018-01-16?15:14??操作系統課設\工程項目(源碼)\ProducerConsumer\.settings\
?????文件?????????598??2018-01-14?11:26??操作系統課設\工程項目(源碼)\ProducerConsumer\.settings\org.eclipse.jdt.core.prefs
?????目錄???????????0??2018-01-16?15:14??操作系統課設\工程項目(源碼)\ProducerConsumer\bin\
?????目錄???????????0??2018-01-16?15:14??操作系統課設\工程項目(源碼)\ProducerConsumer\bin\frame\
?????文件????????1488??2018-01-15?22:24??操作系統課設\工程項目(源碼)\ProducerConsumer\bin\frame\CenterPanel.class
?????文件????????4291??2018-01-16?12:22??操作系統課設\工程項目(源碼)\ProducerConsumer\bin\frame\Myframe.class
?????文件?????????907??2018-01-16?11:13??操作系統課設\工程項目(源碼)\ProducerConsumer\bin\help.txt
?????目錄???????????0??2018-01-16?15:14??操作系統課設\工程項目(源碼)\ProducerConsumer\bin\main\
?????文件????????2026??2018-01-15?21:46??操作系統課設\工程項目(源碼)\ProducerConsumer\bin\main\Main.class
?????文件????????1864??2018-01-15?22:37??操作系統課設\工程項目(源碼)\ProducerConsumer\bin\main\MyHelp.class
?????文件????????2396??2018-01-16?11:20??操作系統課設\工程項目(源碼)\ProducerConsumer\bin\main\ProducerConsumer$Consumer.class
?????文件????????2448??2018-01-16?11:20??操作系統課設\工程項目(源碼)\ProducerConsumer\bin\main\ProducerConsumer$Producer.class
?????文件????????2014??2018-01-16?11:20??操作系統課設\工程項目(源碼)\ProducerConsumer\bin\main\ProducerConsumer.class
?????文件?????????934??2018-01-15?22:00??操作系統課設\工程項目(源碼)\ProducerConsumer\bin\main\util.class
?????目錄???????????0??2018-01-16?15:14??操作系統課設\工程項目(源碼)\ProducerConsumer\src\
?????目錄???????????0??2018-01-16?15:14??操作系統課設\工程項目(源碼)\ProducerConsumer\src\frame\
?????文件????????1503??2018-01-15?22:24??操作系統課設\工程項目(源碼)\ProducerConsumer\src\frame\CenterPanel.java
?????文件????????5115??2018-01-16?12:22??操作系統課設\工程項目(源碼)\ProducerConsumer\src\frame\Myframe.java
?????文件?????????907??2018-01-16?11:13??操作系統課設\工程項目(源碼)\ProducerConsumer\src\help.txt
?????目錄???????????0??2018-01-16?15:14??操作系統課設\工程項目(源碼)\ProducerConsumer\src\main\
?????文件????????1409??2018-01-15?21:46??操作系統課設\工程項目(源碼)\ProducerConsumer\src\main\Main.java
?????文件????????1380??2018-01-15?22:37??操作系統課設\工程項目(源碼)\ProducerConsumer\src\main\MyHelp.java
?????文件????????6292??2018-01-16?11:20??操作系統課設\工程項目(源碼)\ProducerConsumer\src\main\ProducerConsumer.java
?????文件?????????671??2018-01-15?22:00??操作系統課設\工程項目(源碼)\ProducerConsumer\src\main\util.java
............此處省略1個文件信息

評論

共有 條評論