日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

多线程:生产者消费者问题

發布時間:2024/9/27 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 多线程:生产者消费者问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.假設倉庫只能存一件產品,生產者將產品放入倉庫,消費者將產品從倉庫取出

2.倉庫沒有產品,生產者將產品放倉庫,否則停止生產并等待,直到倉庫產品被消費者取走

3.如果倉庫放有產品,消費者可取走,否則停止消費并等待,直到倉庫再次放入產品

===============

線程通信-分析

生產者沒有生產產品之前,要通知消費者等待,生產產品之后,通知消費者消費

消費者消費后通知生產者已經結束消費,需要生產新產品供消費

生產者和消費者問題中,僅有synchronized是不夠的

synchronized可組止并發更新同一個共享資源,實現同步

synchronized不能實現線程之間消息傳遞(通信)

=================

線程通信方法

wait():線程一直等待,直到其他線程通知,與sleep不同,會釋放鎖

wait(long timeout):指定等待的毫秒數

notify():喚醒處于等待狀態的線程

notifyAll():喚醒所有調用wait()方法的線程,優先級別高的線程優先調度

都是Object類方法,都只能在同步方法或同步代碼塊中使用,否則拋出IIIegaIMonitorStateException

============

解決方式一:

管程法

生產者:負責生產數據的模塊(可能是方法,對象,線程,進程);

消費者:負責處理數據的模塊(可能是方法,對象,線程,進程);

緩沖區:消費者不能直接使用生產者的數據,他們之間有緩沖區,生產者將數據放入緩沖區,消費者從緩沖區拿數據

解決方式二:

并發協作模型,信號燈法

總結

以上是生活随笔為你收集整理的多线程:生产者消费者问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。