欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java中線程掛起的幾種方式詳解

 更新時間:2019年08月22日 09:02:06   作者:357029540  
這篇文章主要介紹了java中線程掛起的幾種方式詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

前言

在Java中使用線程的時候肯定會有線程掛起的這種情況出現(xiàn),在Java中提供了3種方式:suspend/resume、wait/notify,notifyAll、park/unpark。

1.suspend/resume

這種方式已經(jīng)在Java中被棄用,因為它容易引起死鎖。在使用關(guān)鍵字synchronized的時候如

synchronized (this) { 
 Thread.currentThread().suspend(); 
} 

這個時候使用resume方法是無法喚醒線程的,還有一種情況是如果在resume方法之后才進行suspend方法的調(diào)用,這個也是無法進行suspend方法的喚醒的,因為這個事件發(fā)生的順序已經(jīng)造成了死鎖的出現(xiàn)。

2.wait/notify,notifyAll

這個是Java中常用的線程掛起方法,當(dāng)調(diào)用wait方法的時候線程會自動的釋放掉占有的線程資源鎖,然后通過notify或notifyAll方法進行wait方法的喚醒,因此在這個地方不會出現(xiàn)死鎖,當(dāng)時如suspend/resume中提到的,如果在notify或notifyAll方法之后在進行wait操作,那么肯定也是會出現(xiàn)死鎖的。

這里必須說明一下的是sleep方法,雖然它也能將線程掛起,但是它會產(chǎn)生InterruptedException異常,當(dāng)sleep一定時間后它將會自動執(zhí)行后面的方法,也可以通過interrupt方法進行主動打斷sleep方法進行線程喚醒。

3.park/unpark

park的字面量意思是指停車場的意思,使用park來掛起線程后需要調(diào)用unpark來進行喚醒,這個沒有先后順序的區(qū)分,如果你提前進行了unpark,然后在進行park也是可以的,但是提前了的多個unpark只能看做是一個unpark,不能進行重復(fù)疊加,如果再次park的話需要新的unpark來進行喚醒操作,這個比如你在停車場進行停車操作,你如果提前進行了預(yù)約停車,你在未進入停車場之前都是可以進行多次預(yù)約的,這所有的預(yù)約只扣一次錢(unpark),但是這所有的預(yù)約操作都看作是你這一次進入停車場停車(park)的憑證,如果你離開了通過繳費憑證(unpark)一旦你想進行下一次停車,那么已經(jīng)使用過的預(yù)約都不能進行作數(shù)了,你只能再次預(yù)約或者直接進入停車場,一旦要離開只能再次繳費(unpark)。

調(diào)用park/unpark使用的是LockSupport.park()/LockSupport.unpark()。

使用park/unpark的使用使用synchronized關(guān)鍵字也會出現(xiàn)死鎖的情況,因為它并不釋放線程所占用的鎖資源,所以使用的時候也需要注意。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 全面解析Java8觀察者模式

    全面解析Java8觀察者模式

    這篇文章主要為大家全面解析Java8觀察者模式,通過在 Java8 環(huán)境下實現(xiàn)觀察者模式的實例,進一步介紹了什么是觀察者模式、專業(yè)化及其命名規(guī)則,感興趣的小伙伴們可以參考一下
    2016-02-02
  • elasticsearch集群查詢超10000的解決方案

    elasticsearch集群查詢超10000的解決方案

    ES為了避免用戶的過大分頁請求造成ES服務(wù)所在機器內(nèi)存溢出,默認(rèn)對深度分頁的條數(shù)進行了限制,默認(rèn)的最大條數(shù)是10000條,這篇文章主要給大家介紹了關(guān)于elasticsearch集群查詢超10000的解決方案,需要的朋友可以參考下
    2024-08-08
  • 讀取Java文件到byte數(shù)組的三種方法(總結(jié))

    讀取Java文件到byte數(shù)組的三種方法(總結(jié))

    下面小編就為大家?guī)硪黄x取Java文件到byte數(shù)組的三種方法(總結(jié))。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • Java線程的新建和就緒狀態(tài)實例分析

    Java線程的新建和就緒狀態(tài)實例分析

    這篇文章主要介紹了Java線程的新建和就緒狀態(tài),結(jié)合實例形式分析了java線程的創(chuàng)建、調(diào)用等相關(guān)操作技巧,需要的朋友可以參考下
    2019-09-09
  • JAVA數(shù)據(jù)寫入生成excel文件和發(fā)送郵件

    JAVA數(shù)據(jù)寫入生成excel文件和發(fā)送郵件

    這篇文章主要介紹了JAVA數(shù)據(jù)寫入生成excel文件和發(fā)送郵件,流程:先導(dǎo)包 => 郵箱開啟配置 => java寫好配置類 => 測試發(fā)送 => 數(shù)據(jù)寫入excel => 郵件帶附件發(fā)送
    2024-06-06
  • SpringCloud Alibaba 基本開發(fā)框架搭建過程

    SpringCloud Alibaba 基本開發(fā)框架搭建過程

    這篇文章主要介紹了SpringCloud Alibaba 基本開發(fā)框架搭建過程,開發(fā)工具選用的idea,本文通過圖文實例相結(jié)合給大家分享搭建全過程,需要的朋友可以參考下
    2021-06-06
  • SpringBoot2底層注解@ConfigurationProperties配置綁定

    SpringBoot2底層注解@ConfigurationProperties配置綁定

    這篇文章主要介紹了SpringBoot2底層注解@ConfigurationProperties配置綁定,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • SWT(JFace)體驗之Sash(活動控件)

    SWT(JFace)體驗之Sash(活動控件)

    SWT(JFace)體驗之Sash(活動控件)
    2009-06-06
  • Spring Boot自定義favicon實現(xiàn)方法實例解析

    Spring Boot自定義favicon實現(xiàn)方法實例解析

    這篇文章主要介紹了Spring Boot自定義favicon實現(xiàn)方法實例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • Spring?Boot?Aop執(zhí)行順序深入探究

    Spring?Boot?Aop執(zhí)行順序深入探究

    這篇文章主要為大家介紹了Spring?Boot?Aop執(zhí)行順序深入探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01

最新評論