国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java——》線程間是如何通信的

這篇具有很好參考價值的文章主要介紹了Java——》線程間是如何通信的。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

推薦鏈接:
????總結(jié)——》【Java】
????總結(jié)——》【Mysql】
????總結(jié)——》【Redis】
????總結(jié)——》【Kafka】
????總結(jié)——》【Spring】
????總結(jié)——》【SpringBoot】
????總結(jié)——》【MyBatis、MyBatis-Plus】
????總結(jié)——》【Linux】
????總結(jié)——》【MongoDB】
????總結(jié)——》【Elasticsearch】

線程之間的通信有兩種方式:共享內(nèi)存消息傳遞。

一、共享內(nèi)存

在共享內(nèi)存的并發(fā)模型里,線程之間共享程序的公共狀態(tài),線程之間通過寫-讀內(nèi)存中的公共狀態(tài)來隱式進(jìn)行通信。
典型的共享內(nèi)存通信方式,就是通過共享對象進(jìn)行通信。
Java——》線程間是如何通信的,Java,java,線程,通信,消息傳遞,共享內(nèi)存,wait
例如線程A與線程B之間如果要通信的話,那么就必須經(jīng)歷下面兩個步驟:

  1. 線程A:把本地內(nèi)存A更新過的共享變量刷新到主內(nèi)存中去。
  2. 線程B:到主內(nèi)存中去讀取線程A之前更新過的共享變量。

二、消息傳遞

在消息傳遞的并發(fā)模型里,線程之間沒有公共狀態(tài),線程之間必須通過明確的發(fā)送消息來顯式進(jìn)行通信。
在Java中典型的消息傳遞方式:

  • wait()和notify()方法
  • wait(long timeout)和notify()方法
  • join()方法
  • Lock和Condition接口
  • BlockingQueue阻塞隊列

1、wait()和notify()方法

wait()方法使線程進(jìn)入等待狀態(tài),直到其他線程調(diào)用notify()或notifyAll()方法將其喚醒。notify()方法喚醒一個等待中的線程,notifyAll()方法喚醒所有等待中的線程。

2、wait(long timeout)和notify()方法

wait(long timeout)方法使線程進(jìn)入等待狀態(tài),直到其他線程調(diào)用notify()方法將其喚醒,或者等待時間超過指定的timeout時間。notify()方法喚醒一個等待中的線程。

3、join()方法

join()方法使一個線程等待另一個線程執(zhí)行完畢。當(dāng)一個線程調(diào)用另一個線程的join()方法時,當(dāng)前線程將被阻塞,直到另一個線程執(zhí)行完畢。

4、Lock和Condition接口

Lock接口提供了比synchronized關(guān)鍵字更靈活的鎖機(jī)制,Condition接口提供了更靈活的等待/通知機(jī)制。
通過Lock接口的lock()方法獲取鎖,unlock()方法釋放鎖。
通過Condition接口的await()方法使線程等待,signal()方法喚醒一個等待中的線程,signalAll()方法喚醒所有等待中的線程。

5、BlockingQueue阻塞隊列

BlockingQueue是一個支持阻塞操作的隊列。
當(dāng)隊列為空時,獲取元素的線程將被阻塞,直到隊列中有可用元素;
當(dāng)隊列滿時,插入元素的線程將被阻塞,直到隊列有空閑位置。文章來源地址http://www.zghlxwxcb.cn/news/detail-703087.html

到了這里,關(guān)于Java——》線程間是如何通信的的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • java死鎖、線程狀態(tài)、線程通信、線程池

    java實現(xiàn)多線程: [1]繼承Thread類并重寫run方法 [2]實現(xiàn)Runnable接口 線程Thread中常用的方法: setName(): Thread.currentThread().getName(): ? static void sleep(); static void yield(): join(): setDeamon()設(shè)置后臺線程 線程安全問題: ---當(dāng)多個線程共享同一個資源時,對該資源的操作就會出現(xiàn)線程安全問題。

    2024年02月13日
    瀏覽(24)
  • [Java]線程生命周期與線程通信

    [Java]線程生命周期與線程通信

    【版權(quán)聲明】未經(jīng)博主同意,謝絕轉(zhuǎn)載!(請尊重原創(chuàng),博主保留追究權(quán)) https://www.cnblogs.com/cnb-yuchen/p/18162522 出自【進(jìn)步*于辰的博客】 線程生命周期與進(jìn)程有諸多相似,所以我們很容易將兩者關(guān)聯(lián)理解并混淆,一些細(xì)節(jié)之處確有許多不同,因為線程調(diào)度與進(jìn)程調(diào)度雖都由

    2024年04月27日
    瀏覽(20)
  • Java 進(jìn)階(12) 線程通信

    多個線程在處理同?個資源,但是處理的動作(線程的任務(wù))卻不相同。 為什么要處理線程間通信 多個線程并發(fā)執(zhí)?時, 在默認(rèn)情況下CPU是隨機(jī)切換線程的,當(dāng)我們需要多個線程來共同完成?件任務(wù),并且我們希望他們有規(guī)律的執(zhí)?, 那么多線程之間需要?些協(xié)調(diào)通信,以此

    2023年04月16日
    瀏覽(21)
  • Java線程間通信方式

    Java線程間通信方式

    前文了解了線程的創(chuàng)建方式和狀態(tài)切換,在實際開發(fā)時,一個進(jìn)程中往往有很多個線程,大多數(shù)線程之間往往不是絕對獨立的,比如說我們需要將A和B 兩個線程的執(zhí)行結(jié)果收集在一起然后顯示在界面上,又或者比較典型的消費者-生產(chǎn)者模式,在這些場景下,線程間通信成了我

    2024年02月07日
    瀏覽(16)
  • 【Java】詳解多線程通信

    【Java】詳解多線程通信

    ?? 個人主頁: Dawn黎明開始 ?? 系列專欄: Java ? 每日一句:什么都不做,才會來不及 ?? 歡迎大家:關(guān)注 ??+ 點贊 ??+評論 ??+收藏?? 文章目錄 ??多線程通信 (1).??由來 (2).??成員方法? (3).??案例引入 (4).??代碼實現(xiàn) ? ? ? 現(xiàn)代社會崇尚合作精神,分工合作在日常

    2024年02月05日
    瀏覽(21)
  • Java線程之間通信方式

    Java線程之間通信方式

    在實際開發(fā)時,一個進(jìn)程中往往有很多個線程,大多數(shù)線程之間往往不是絕對獨立的,比如說我們需要將A和B 兩個線程的執(zhí)行結(jié)果收集在一起然后顯示在界面上,又或者比較典型的消費者-生產(chǎn)者模式,在這些場景下,線程間通信成了我們必須使用的手段,那么線程之間怎么通

    2024年02月09日
    瀏覽(20)
  • Java線程間通信方式(3)

    Java線程間通信方式(3)

    前文了解了線程通信方式中的CountDownLatch, Condition,ReentrantLock以及CyclicBarrier,接下來我們繼續(xù)了解其他的線程間通信方式。 Phaser Phaser是JDK1.7中引入的一種功能上和CycliBarrier和CountDownLatch相似的同步工具,相對這兩者而言其用法更加靈活,同時Phaser也支持重用。 在Phaser中將需

    2023年04月27日
    瀏覽(16)
  • 深入理解Java線程間通信

    合理的使用Java多線程可以更好地利用服務(wù)器資源。一般來講,線程內(nèi)部有自己私有的線程上下文,互不干擾。但是當(dāng)我們需要多個線程之間相互協(xié)作的時候,就需要我們掌握J(rèn)ava線程的通信方式。本文將介紹Java線程之間的幾種通信原理。 在Java中,鎖的概念都是基于對象的,

    2024年02月09日
    瀏覽(25)
  • java 線程安全問題 三種線程同步方案 線程通信(了解)

    java 線程安全問題 三種線程同步方案 線程通信(了解)

    線程安全問題指的是,多個線程同時操作同一個共享資源的時候,可能會出現(xiàn)業(yè)務(wù)安全問題。 下面代碼演示上述問題,先定義一個共享的賬戶類: 在定義一個取錢的線程類 最后,再寫一個測試類,在測試類中創(chuàng)建兩個線程對象 某個執(zhí)行結(jié)果: 為了解決前面的線程安全問題,

    2024年02月09日
    瀏覽(16)
  • 【linux】進(jìn)行間通信——共享內(nèi)存+消息隊列+信號量

    【linux】進(jìn)行間通信——共享內(nèi)存+消息隊列+信號量

    進(jìn)程間通信方式目前我們已經(jīng)學(xué)了匿名管道,命名管道。讓兩個獨立的進(jìn)程通信,前提是看到同一份資源。匿名管道適用于血緣關(guān)系的進(jìn)程,一個打開寫端一個打開讀端實現(xiàn)的。命名管道適用于完全獨立的進(jìn)程,打開同一份文件實現(xiàn)的。 接下來我們看看剩下的實現(xiàn)進(jìn)程間通信

    2024年02月05日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包