成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

并發(fā)編程中的線程間通信

網(wǎng)絡(luò) 通信技術(shù)
線程通信的目標是使線程間能夠互相發(fā)送信號。另一方面,線程通信使線程能夠等待其他線程的信號。

 線程通信的目標是使線程間能夠互相發(fā)送信號。另一方面,線程通信使線程能夠等待其他線程的信號。

[[276788]]

線程通信常用的方式有:

  • wait/notify 等待
  • Volatile 內(nèi)存共享
  • CountDownLatch 并發(fā)工具
  • 使用 ReentrantLock 結(jié)合 Condition
  • 基本LockSupport實現(xiàn)線程間的阻塞和喚醒

方式一:使用 volatile 關(guān)鍵字

基于 volatile 關(guān)鍵字來實現(xiàn)線程間相互通信是使用共享內(nèi)存的思想,大致意思就是多個線程同時監(jiān)聽一個變量,當這個變量發(fā)生變化的時候 ,線程能夠感知并執(zhí)行相應(yīng)的業(yè)務(wù)。這也是最簡單的一種實現(xiàn)方式

并發(fā)編程中的線程間通信

運行結(jié)果為:

并發(fā)編程中的線程間通信

方式二:使用Object類的wait() 和 notify() 方法

眾所周知,Object類提供了線程間通信的方法:wait()、notify()、notifyaAl(),它們是多線程通信的基礎(chǔ),而這種實現(xiàn)方式的思想自然是線程間通信。

注意: wait和 notify必須配合synchronized使用,wait方法釋放鎖,notify方法不釋放鎖

并發(fā)編程中的線程間通信

運行結(jié)果為

并發(fā)編程中的線程間通信

由打印結(jié)果截圖可知,在線程A發(fā)出notify()喚醒通知之后,依然是走完了自己線程的業(yè)務(wù)之后,線程B才開始執(zhí)行,這也正好說明了,notify()方法不釋放鎖,而wait()方法釋放鎖。

方式三:使用JUC工具類 CountDownLatch

jdk1.5之后在java.util.concurrent包下提供了很多并發(fā)編程相關(guān)的工具類,簡化了我們的并發(fā)編程代碼的書寫,***CountDownLatch***基于AQS框架,相當于也是維護了一個線程間共享變量state

并發(fā)編程中的線程間通信

運行結(jié)果為:

并發(fā)編程中的線程間通信

方式四:使用 ReentrantLock 結(jié)合 Condition

并發(fā)編程中的線程間通信

運行結(jié)果為:

并發(fā)編程中的線程間通信

顯然這種方式使用起來并不是很好,代碼編寫復(fù)雜,而且線程B在被A喚醒之后由于沒有獲取鎖還是不能立即執(zhí)行,也就是說,A在喚醒操作之后,并不釋放鎖。這種方法跟 Object 的 wait() 和 notify() 一樣。

方式五:基本LockSupport實現(xiàn)線程間的阻塞和喚醒

LockSupport 是一種非常靈活的實現(xiàn)線程間阻塞和喚醒的工具,使用它不用關(guān)注是等待線程先進行還是喚醒線程先運行,但是得知道線程的名字。

并發(fā)編程中的線程間通信

運行結(jié)果

并發(fā)編程中的線程間通信

 

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2023-06-08 08:21:08

多線程編程線程間通信

2017-08-07 20:18:11

Android線程handler

2024-10-18 11:29:15

2021-09-17 14:43:54

鴻蒙HarmonyOS應(yīng)用

2011-12-29 13:31:15

Java

2025-02-17 00:00:25

Java并發(fā)編程

2025-02-19 00:05:18

Java并發(fā)編程

2021-01-22 10:58:16

網(wǎng)絡(luò)安全進程間碼如

2025-01-10 07:10:00

2025-02-06 03:14:38

2023-10-18 15:19:56

2022-11-09 09:01:08

并發(fā)編程線程池

2024-12-27 09:08:25

2019-11-08 14:47:49

TCPIP網(wǎng)絡(luò)

2012-06-17 12:49:03

并發(fā)并發(fā)編程

2022-06-06 15:33:20

線程Java釋放鎖

2017-08-06 00:05:18

進程通信開發(fā)

2023-08-01 08:43:29

Python多線程

2017-01-10 13:39:57

Python線程池進程池

2023-09-26 10:30:57

Linux編程
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 精品91久久 | 欧美国产中文 | 99精品国产一区二区青青牛奶 | 精品国产一区二区三区日日嗨 | 日韩成人久久 | 久久亚洲天堂 | 日韩视频一区在线观看 | 国产日韩久久 | 欧美精品一区二区三区蜜桃视频 | 亚洲成人精品在线观看 | 精品亚洲一区二区 | 精品视频在线一区 | 在线成人 | 国产精品99久久久久久动医院 | 欧美中文在线 | 国产一区二区三区四区五区加勒比 | 欧美日韩视频在线第一区 | 亚洲天堂一区二区 | 久久av一区 | 国产福利免费视频 | 中日韩av | 日韩欧美精品 | 欧美日韩国产不卡 | 国产成人精品一区二区 | 999久久精品 | 欧美视频三区 | 不卡的av电影 | 日韩一区二区三区av | 国产免费一区二区三区最新6 | 免费看一区二区三区 | 妞干网福利视频 | 亚洲一区二区三区四区五区中文 | 日韩视频专区 | 91香蕉嫩草| 精品久久久久久久人人人人传媒 | 国产亚洲网站 | 91精品国产欧美一区二区成人 | 欧美一级淫片免费视频黄 | 精品一二三区在线观看 | 亚洲高清成人 | 国产精品久久片 |