public class value
public class producer
string value = system.currenttimemillis() + "_" + system.nanotime();
value.value = value;
system.out.println(thread.currentthread().getname()+"生產了value為:" + value);
condition.signal();
} catch (exception e) finally
}}
public class customer
system.out.println(thread.currentthread().getname()+"消費了value,為:" + value.value);
value.value = "";
condition.signal();
} catch (exception e) finally
}}
public class testmain
string value = system.currenttimemillis() + "_" + system.nanotime();
value.value = value;
system.out.println(thread.currentthread().getname()+"生產了value為:" + value);
condition.signal();
} catch (exception e) finally
synchronized ()
}public void getvalue()
system.out.println(thread.currentthread().getname()+"消費了value,為:" + value.value);
value.value = "";
condition.signal();
} catch (exception e) finally
}}
public class testmain {
public static void main(string args) throws exception {
producerandcustomer producerandcustomer = new producerandcustomer ();
runnable producerrunable = new runnable() {
@override
public void run() {
for (int i = 0; i 問題原因:沒有使用同乙個lock,生產者和消費者都是使用了各自的lock。所以釋放鎖和加鎖,各自不影響,導致程式阻塞。
生產者消費者問題 lock
public class public static void main string args class producer public void produce final intval start class consumer public void consume final intval...
Lock版本生產者和消費者模式
生產者的執行緒專門用來生產一些資料,存放到乙個中間變數中。消費者再從這個中間的變數中取出資料進行消費。但是因為要使用中間變數,中間變數通常是一些全域性變數,因此需要使用鎖來保證資料完整性。import random import threading gmoney 1000gtimes 0 gallt...
C 實現生產者和消費者
生產者 消費者模式是乙個十分經典的多執行緒併發協作的模式,弄懂生產者 消費者問題能夠讓我們對併發程式設計的理解加深。所謂生產者 消費者問題,實際上主要是包含了兩類執行緒,一種是生產者執行緒用於生產資料,另一種是消費者執行緒用於消費資料,為了解耦生產者和消費者的關係,通常會採用共享的資料區域,就像是乙...