多執行緒 生產者和消費者

2021-07-03 14:55:30 字數 870 閱讀 6601

生產者-消費者問題:

生產者向產品區里放產品,當產品區里滿了,需要等待;消費者從產品區里取產品消耗,當產品區里空了,需要等待。

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 消費者執行緒 消...