?? producer.java
字號:
/**
*
*/
package problem8_3;
import java.util.*;
/**
* @author Administrator
*
*/
public class Producer extends Thread{
// size和stringArray不寫修飾符是為了方便同一包中的非子類Consumer和Producer的對象訪問
StrArray pStrList;
// produceSize定義生產者可以生產多少數據
int produceSize;
// inputNum定義生產者已經生產了多少數據
int inputNum;
public Producer() {
}
public Producer(String producerName,StrArray aStrArray,int i) {
super(producerName);
pStrList=aStrArray;
produceSize=i;
inputNum=0;
//// 測試能否直接調用類數據成員s,事實證明可以
// System.out.println("呵呵"+pStrList.s[0]);
}
public void run() {
while(inputNum<produceSize) {
// 注意s的下標從0開始,而stringArray的size從1開始
System.out.println("Producer produce "+StrArray.S[inputNum]);
// 這里不是add StrArray.s[pStrList.stringArray.size()]是因為pStrList.stringArray.size()會隨著str.remove()(在Consumer中)而改變,如果生產之中突然切換到Consumer,并執行了remove方法,那么size會改變,這樣如果在切換回Producer,那么就會造成重復生產
pStrList.stringArray.add(StrArray.S[inputNum]);
inputNum++;
}
if(inputNum==produceSize) {
System.out.println(Thread.currentThread().getName()+"生產"+inputNum+"個數據完畢,結束生產");
System.out.println(Thread.currentThread().getName()+" end");
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -