生產者消費者問題

2021-10-06 01:22:11 字數 2486 閱讀 3050

最簡單的多執行緒問題

生產者

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 ...