日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

人與人之間通過交流構成了這個豐富多彩的世界,在計算機中,通過即時通信工具傳遞信息為我么的生活增添了很多樂趣也提供了很多遍歷,而在JAVA線程的世界里,線程之間的通信,可以極大的增強我們的功能,今天就帶你一塊走進線程通信的世界里。

這篇文章是基礎入門文章,主要是wait和notify來解決單線程通信問題的。對于多線程通信極其實現方式我會在后續的課程中依次推出。不喜勿噴。

一、基本認識

在講解java線程之間的問題時,我們先想一下,為什么需要線程之間的通信呢?我們舉一個例子:

愚公門前有座大山,想要移走,可是評價自己的力量肯定不夠呀,于是叫來了一伙人,一塊把這座山移走。

java中使用wait和notify進行單線程之間的通信

 

以上這個簡單的案例就能夠表達我們的意思,也就是需要合作辦成某件事。在java中,我們想要完成某個功能,一個線程完成不了,這時候就需要兩個或者是多個線程一塊來完成了,多個線程一塊合作這時候就需要交流,也就是通信了。

通信的方式很多,比如說共享內存、管道、mutex等等各種方式,不管是那種方式都是為了完成功能而已。

另外還有一個需要注意的問題,那就是什么是進程間通信?我們同樣舉一個例子。

有兩個國家,國家內部之間的交流就是線程間通信,兩個國家之間的交流就是進程間通信。

java中使用wait和notify進行單線程之間的通信

 

下面我們就來看看如何進行通信。

二、單線程間通信實現

java解決單線程之間的通信很簡單,大致上有三種,我們依次來分析實現一下。這里要完成一個功能,那就是生產者和消費者模型。假設我們想要完成的功能描述如下:

工廠生產完了東西之后,通知消費者消費,在生產出來之前,消費者等待。我們直接看實現方法。

java中使用wait和notify進行單線程之間的通信

 

上面的這個生產消費過程看起來完全沒毛病,我們就寫一下main方法中測試一下:

java中使用wait和notify進行單線程之間的通信

 

也就是說我們開啟兩個線程,一個用于生產,一個用于消費,沒毛病吧。那我們就運行一下,看看結果。

java中使用wait和notify進行單線程之間的通信

 

我們一下子把所有的全部生產出來了,但是消費的時候消費了最后一個而且還是重復消費的。這就有問題了,我們明明想要的就是生產一個消費一個,這時候怎么辦呢?這就用到了我們的等待通知模型。

java中使用wait和notify進行單線程之間的通信

 

現在我們再來測試一下:

java中使用wait和notify進行單線程之間的通信

 

我們再看一下測試結果吧。

java中使用wait和notify進行單線程之間的通信

 

以上就是單線程之間通信最簡單的解決方法。當然了單線程的通信肯定是不能滿足我們的日常需求的。而且對于上述問題我們還有很多其他的方式可以解決。這篇文章只是起到一個拋磚引玉的作用。

分享到:
標簽:單線程 java
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定