最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java線程等待喚醒幾種方法小結

 更新時間:2023年10月07日 14:47:05   作者:與遨游于天地  
線程等待和喚醒有三種實現(xiàn)方法,分別是Object類中的wait、notify,Condition類中的await、signal,LockSupport類中的park、unpark方法,感興趣的可以了解一下

線程等待和喚醒有三種實現(xiàn)方法,分別是Object類中的wait、notify;Condition類中的await、signal;LockSupport類中的park、unpark方法。

1、Object類中的wait、notify必須配合Synchronized關鍵字一起使用,否則會拋出IllegalMonitorStateException異常,并且notify喚醒需要在wait之后,否則無法喚醒。

public static void main(String[] args) {
		Object o = new Object();
		new Thread(()->{
			synchronized (o) {
				try {
					o.wait();
				} catch (InterruptedException e) {
					throw new RuntimeException(e);
				}
				System.out.println("被喚醒");
			}
		}).start();
		System.out.println("準備喚醒");
		synchronized (o) {
			o.notify();
		}
   }

2、Condition類中的await、signal必須配合Lock.lock、unlock一起使用,否則會拋出IllegalMonitorStateException異常,并且signal喚醒需要在await之后使用,否則無法喚醒。

public static void main(String[] args) {
		Lock reentrantLock = new ReentrantLock();
		Condition condition = reentrantLock.newCondition();
		new Thread(()->{
			reentrantLock.lock();
			try {
				condition.await();
				System.out.println("被喚醒");
			} catch (InterruptedException e) {
				throw new RuntimeException(e);
			} finally {
				reentrantLock.unlock();
			}
		}).start();
		System.out.println("準備喚醒");
		reentrantLock.lock();
		try {
			condition.signal();
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			throw new RuntimeException(e);
		} finally {
			reentrantLock.unlock();
		}
   }

3、LockSupport類中的park、unpark屬于靜態(tài)方法,unpark會生成許可證,park會消費許可證。先調用park如果未生成許可證,那么會阻塞等待unpark生成許可證,并不會拋出異常。他們只和線程關聯(lián),且線程最多只能有一個許可證,這意味著每次生成憑證之后,需要等消費完才能繼續(xù)生成憑證。

public static void main(String[] args) {
		Thread thread = new Thread(() -> {
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				throw new RuntimeException(e);
			}
			LockSupport.park();
			System.out.println("被喚醒");
		});
		thread.start();
		System.out.println("準備喚醒");
        //斷點可以看到unpark先執(zhí)行,之后執(zhí)行park
		LockSupport.unpark(thread);
        //thread.start()在unpark之后無效,線程必須啟動才能unpark成功
	}

到此這篇關于Java線程等待喚醒幾種方法小結的文章就介紹到這了,更多相關Java線程等待喚醒內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家! 

相關文章

  • Java webSerivce的使用看完你就明白了

    Java webSerivce的使用看完你就明白了

    因為前段時間,需要使用到webService來調用公司的其他系統(tǒng)api接口,但是請求方式和我熟知的http請求不一樣,是基于soap協(xié)議來傳輸xml數(shù)據(jù)格式,請求的參數(shù)極其復雜,需要封裝多層xml數(shù)據(jù)格式,并且我不知道對方的api接口是什么語言,甚至不知道他們存在于什么平臺
    2022-03-03
  • 詳解SpringBoot實現(xiàn)JPA的save方法不更新null屬性

    詳解SpringBoot實現(xiàn)JPA的save方法不更新null屬性

    直接調用原生Save方法會導致null屬性覆蓋到數(shù)據(jù)庫,使用起來十分不方便。本文詳細的介紹了如何解決這個問題,非常具有實用價值,需要的朋友可以參考下
    2018-12-12
  • Java實現(xiàn)上傳網絡圖片到七牛云存儲詳解

    Java實現(xiàn)上傳網絡圖片到七牛云存儲詳解

    這篇文章主要為大家詳細介紹了Java如何實現(xiàn)上傳網絡圖片到七牛云存儲,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以跟隨小編一起學習一下
    2022-12-12
  • MyBatis實現(xiàn)多表聯(lián)合查詢resultType的返回值

    MyBatis實現(xiàn)多表聯(lián)合查詢resultType的返回值

    這篇文章主要介紹了MyBatis多表聯(lián)合查詢resultType的返回值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java超詳細講解類變量和類方法

    Java超詳細講解類變量和類方法

    這篇文章主要介紹了JAVA類變量及類方法代碼實例詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2022-05-05
  • Java實現(xiàn)手寫線程池實例并測試詳解

    Java實現(xiàn)手寫線程池實例并測試詳解

    這篇文章主要來模擬一下線程池和工作隊列的流程,以及編寫代碼和測試類進行測試。文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2023-02-02
  • Google Guava 緩存工具使用詳解

    Google Guava 緩存工具使用詳解

    這篇文章主要介紹了Guava自加載緩存LoadingCache使用指南,通過這些內容介紹,了解了LoadingCache的基本原理和用法,包括如何創(chuàng)建和配置緩存,以及如何結合Java?8的特性來優(yōu)化代碼,需要的朋友可以參考下
    2023-12-12
  • Java實現(xiàn)SSH模式加密

    Java實現(xiàn)SSH模式加密

    這篇文章主要介紹了Java實現(xiàn)SSH模式加密的相關資料,需要的朋友可以參考下
    2016-01-01
  • spring Mvc配置xml使ResponseBody返回Json的方法示例

    spring Mvc配置xml使ResponseBody返回Json的方法示例

    這篇文章主要給大家介紹了關于spring Mvc配置xml使ResponseBody返回Json的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-04-04
  • AntDesign多環(huán)境配置啟動過程詳解

    AntDesign多環(huán)境配置啟動過程詳解

    這篇文章主要為大家介紹了AntDesign多環(huán)境配置啟動過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11

最新評論

新竹市| 湟源县| 吴堡县| 昌江| 洛宁县| 江西省| 东源县| 斗六市| 冷水江市| 宁晋县| 黎城县| 青铜峡市| 冕宁县| 宁明县| 靖远县| 江孜县| 石泉县| 紫金县| 射阳县| 长治县| 林周县| 即墨市| 清水河县| 开封县| 兴文县| 宁波市| 县级市| 永城市| 海盐县| 南京市| 旺苍县| 积石山| 靖远县| 孙吴县| 平罗县| 治县。| 铜鼓县| 泾源县| 彰化市| 尚义县| 乐清市|