生產者-消費者問題:
生產者向產品區里放產品,當產品區里滿了,需要等待;消費者從產品區里取產品消耗,當產品區里空了,需要等待。
多個生產者-多個消費者問題public
class
producerandconsumer
//消費者
static class consumer implements runnable
}catch(interruptedexception ex){}}}
//生產者
static class producer implements runnable
}catch(interruptedexception ex){}}}
}//緩衝池
class buffer
int num = queue.poll();
system.out.println("\t\t\t\t["+queue.size()+"]poll:" + num);
full.signal();
}catch(interruptedexception ex)finally
}//存數
public
void
push(int num)
queue.offer(num);
system.out.println("["+queue.size()+"]push:" + num);
empty.signal();
}catch(interruptedexception ex)finally
}}
由於產品區是互斥訪問的,一次只有乙個執行緒能夠進入產品區,所以和上面的幾乎一樣,只是多加乙個程序(不知道理解的是否對)
多執行緒 生產者和消費者
前面說過,每個執行緒都有自己的資源,但是 區是共享的,即每個執行緒都可以執行相同的函式。這可能帶來的問題就是幾個執行緒同時執行乙個函式,導致資料的混亂,產生不可預料的結果,因此我們必須避免這種情況的發生。c 提供了乙個關鍵字lock,它可以把一段 定義為互斥段 critical section 互斥...
多執行緒 生產者消費者
這個就不多說了,直接上 include include using namespace std const unsigned short size of buffer 10 緩衝區長度 unsigned short productid 0 產品號 unsigned short consumeid 0...
多執行緒 生產者和消費者問題
緩衝區 緩衝區 擁有乙個值,可以設定可以獲得 public class buffer public void setvalue int value 生產者執行緒 生產者執行緒 public class setthread extends thread public void run 消費者執行緒 消...