最簡單的多執行緒問題
生產者
public
class
producer
implements
runnable
@override
public
void
run()}
}
消費者
public
class
consumer
implements
runnable
@override
public
void
run()}
}
商品
public
class
goods
public
goods
( string brand, string name)
// 消費商品
public
synchronized
void
sell
(string brand,string name)
catch
(interruptedexception e)
} quantity--
; system.out.
println
("消費了"
+brand+name +
"--現在庫存"
+quantity)
;notify()
;// 喚醒
}// 生產商品
public
synchronized
void
make
(string brand,string name)
catch
(interruptedexception e)
} quantity++
; system.out.
println
("生產了"
+brand+name +
"--現在庫存"
+quantity)
;notify()
;// 喚醒
}@override
public string tostring()
';}}
測試類
goods goods =
newgoods()
;producer producer=
newproducer
(goods)
;consumer consumer =
newconsumer
(goods)
;thread t1 =
newthread
(producer)
;thread t2 =
newthread
(consumer)
;t2.
start()
;t1.
start()
;
生產者
public
class
producerqueue
implements
runnable
@override
public
void
run(
)catch
(interruptedexception e)}}
}
消費者
public
class
consumerqueue
implements
runnable
@override
public
void
run(
)catch
(interruptedexception e)}}
}
測試類
goods goods =
newgoods()
;blockingqueue
queue =
newarrayblockingqueue
<
>(5
);producerqueue producerqueue =
newproducerqueue
(queue)
;consumerqueue consumerqueue =
newconsumerqueue
(queue)
;thread t1 =
newthread
(consumerqueue)
;thread t2 =
newthread
(producerqueue)
;t1.
start()
;t2.
start()
;
生產者消費者問題
public class producer consumer class godown public godown int num public synchronized void produce int n catch interruptedexception e curr num n syste...
生產者 消費者問題
在學習程序互斥中,有個著名的問題 生產者 消費者問題。這個問題是乙個標準的 著名的同時性程式設計問題的集合 乙個有限緩衝區和兩類執行緒,它們是生產者和消費者,生產者把產品放入緩衝區,相反消費者便是從緩衝區中拿走產品。生產者在緩衝區滿時必須等待,直到緩衝區有空間才繼續生產。消費者在緩衝區空時必 須等待...
生產者 消費者問題
1 程序互斥問題 緩衝區b是臨界資源,程序p和c不能同時對b進行操作,即只能互斥的操作 2 程序同步問題 p不能往 滿 的的緩衝區b放產品,c不能從空的緩衝區獲得產品。當緩衝區滿時,c必須先於p執行,當緩衝區空時,p必須先於c執行 我們給出如下基於記錄型 二元 訊號量機制的解法 10 9 2013 ...