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

Java中sleep()與wait()的區(qū)別總結(jié)

 更新時(shí)間:2017年05月11日 09:28:42   作者:Hongten  
因?yàn)樽罱鼘W(xué)習(xí)時(shí)正好碰到這兩個(gè)方法,就查閱相關(guān)資料,并通過程序?qū)崿F(xiàn),進(jìn)行區(qū)別總結(jié)一下,所以下面這篇文章主要給大家總結(jié)介紹了關(guān)于Java中sleep()與wait()區(qū)別的相關(guān)資料,需要的朋友可以參考,下面來一起看看吧。

前言

對于sleep()方法,我們首先要知道該方法是屬于Thread類中的。而wait()方法,則是屬于Object類中的。

sleep()方法導(dǎo)致了程序暫停執(zhí)行指定的時(shí)間,讓出cpu該其他線程,但是他的監(jiān)控狀態(tài)依然保持者,當(dāng)指定的時(shí)間到了又會自動(dòng)恢復(fù)運(yùn)行狀態(tài)。

在調(diào)用sleep()方法的過程中,線程不會釋放對象鎖。

而當(dāng)調(diào)用wait()方法的時(shí)候,線程會放棄對象鎖,進(jìn)入等待此對象的等待鎖定池,只有針對此對象調(diào)用notify()方法后本線程才進(jìn)入對象鎖定池準(zhǔn)備

獲取對象鎖進(jìn)入運(yùn)行狀態(tài)。

什么意思呢?

舉個(gè)列子說明:

/**
 * 
 */
package com.b510.test;

/**
 * java中的sleep()和wait()的區(qū)別
 * @author Hongten
 * @date 2013-12-10
 */
public class TestD {

 public static void main(String[] args) {
  new Thread(new Thread1()).start();
  try {
   Thread.sleep(5000);
  } catch (Exception e) {
   e.printStackTrace();
  }
  new Thread(new Thread2()).start();
 }
 
 private static class Thread1 implements Runnable{
  @Override
  public void run(){
   synchronized (TestD.class) {
   System.out.println("enter thread1..."); 
   System.out.println("thread1 is waiting...");
   try {
    //調(diào)用wait()方法,線程會放棄對象鎖,進(jìn)入等待此對象的等待鎖定池
    TestD.class.wait();
   } catch (Exception e) {
    e.printStackTrace();
   }
   System.out.println("thread1 is going on ....");
   System.out.println("thread1 is over!!!");
   }
  }
 }
 
 private static class Thread2 implements Runnable{
  @Override
  public void run(){
   synchronized (TestD.class) {
    System.out.println("enter thread2....");
    System.out.println("thread2 is sleep....");
    //只有針對此對象調(diào)用notify()方法后本線程才進(jìn)入對象鎖定池準(zhǔn)備獲取對象鎖進(jìn)入運(yùn)行狀態(tài)。
    TestD.class.notify();
    //==================
    //區(qū)別
    //如果我們把代碼:TestD.class.notify();給注釋掉,即TestD.class調(diào)用了wait()方法,但是沒有調(diào)用notify()
    //方法,則線程永遠(yuǎn)處于掛起狀態(tài)。
    try {
     //sleep()方法導(dǎo)致了程序暫停執(zhí)行指定的時(shí)間,讓出cpu該其他線程,
     //但是他的監(jiān)控狀態(tài)依然保持者,當(dāng)指定的時(shí)間到了又會自動(dòng)恢復(fù)運(yùn)行狀態(tài)。
     //在調(diào)用sleep()方法的過程中,線程不會釋放對象鎖。
     Thread.sleep(5000);
    } catch (Exception e) {
     e.printStackTrace();
    }
    System.out.println("thread2 is going on....");
    System.out.println("thread2 is over!!!");
   }
  }
 }
}

運(yùn)行效果:

enter thread1...
thread1 is waiting...
enter thread2....
thread2 is sleep....
thread2 is going on....
thread2 is over!!!
thread1 is going on ....
thread1 is over!!!

如果注釋掉代碼:

TestD.class.notify();

運(yùn)行效果:

enter thread1...
thread1 is waiting...
enter thread2....
thread2 is sleep....
thread2 is going on....
thread2 is over!!!

且程序一直處于掛起狀態(tài)。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • java加密解密示例分享

    java加密解密示例分享

    想要?jiǎng)?chuàng)造一個(gè)只有自己能看懂的文件嗎?那就是對數(shù)據(jù)加密吧,下面分享一個(gè)java的數(shù)據(jù)加密與解密示例
    2014-01-01
  • Java運(yùn)行時(shí)jar終端輸出的中文日志亂碼兩種解決方式

    Java運(yùn)行時(shí)jar終端輸出的中文日志亂碼兩種解決方式

    jar包啟動(dòng),今天java開發(fā)過來找,說jar包啟動(dòng)日志是亂碼,這篇文章主要給大家介紹了關(guān)于Java運(yùn)行時(shí)jar終端輸出的中文日志亂碼的兩種解決方式,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • java RMI詳細(xì)介紹及實(shí)例講解

    java RMI詳細(xì)介紹及實(shí)例講解

    這篇文章主要介紹了java RMI詳細(xì)介紹及實(shí)例講解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 全面解析SpringBoot配置文件

    全面解析SpringBoot配置文件

    這篇文章主要為大家全面的解析SpringBoot-配置文件,文中附含詳細(xì)的圖文示例代碼,以便同學(xué)們能更好的理解,有需要的同學(xué)可以借鑒參考下
    2021-09-09
  • MyBatis簡介與配置MyBatis+Spring+MySql的方法

    MyBatis簡介與配置MyBatis+Spring+MySql的方法

    MyBatis 是一個(gè)可以自定義SQL、存儲過程和高級映射的持久層框架。這篇文章主要介紹了MyBatis簡介與配置MyBatis+Spring+MySql的方法,需要的朋友可以參考下
    2017-04-04
  • 簡單的java圖片處理類(圖片水印 圖片縮放)

    簡單的java圖片處理類(圖片水印 圖片縮放)

    本圖片處理類功能非常之強(qiáng)大可以實(shí)現(xiàn)幾乎所有WEB開發(fā)中對圖像的處理功能都集成了,包括有縮放圖像、切割圖像、圖像類型轉(zhuǎn)換、彩色轉(zhuǎn)黑白、文字水印、圖片水印等功能
    2013-11-11
  • Spring的BeanFactoryPostProcessor接口示例代碼詳解

    Spring的BeanFactoryPostProcessor接口示例代碼詳解

    這篇文章主要介紹了Spring的BeanFactoryPostProcessor接口,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • SpringBoot服務(wù)獲取Pod當(dāng)前IP的兩種方案

    SpringBoot服務(wù)獲取Pod當(dāng)前IP的兩種方案

    在 Kubernetes 集群中,Spring Boot 服務(wù)獲取 Pod 當(dāng)前 IP 的方案主要有兩種,通過環(huán)境變量注入 或 通過 Java 代碼動(dòng)態(tài)獲取網(wǎng)絡(luò)接口 IP,下面我們來看看具體實(shí)現(xiàn)方法吧
    2025-06-06
  • springboot3生成本地文件url的實(shí)現(xiàn)示例

    springboot3生成本地文件url的實(shí)現(xiàn)示例

    本文主要介紹了springboot3生成本地文件url的實(shí)現(xiàn)示例,從而提供一種高效的文件管理方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • Gradle中Maven倉庫配置的實(shí)現(xiàn)步驟

    Gradle中Maven倉庫配置的實(shí)現(xiàn)步驟

    在Java/Kotlin 項(xiàng)目的構(gòu)建過程中,依賴管理是核心環(huán)節(jié)之一,而Maven 倉庫是最常見的依賴來源,本文就來詳細(xì)的介紹一下Gradle中Maven倉庫配置,感興趣的可以了解一下
    2025-09-09

最新評論

云梦县| 沿河| 错那县| 三穗县| 长海县| 新建县| 县级市| 宁都县| 福州市| 潞城市| 外汇| 会泽县| 炉霍县| 县级市| 武乡县| 罗定市| 怀安县| 安多县| 津市市| 明星| 交城县| 京山县| 宁晋县| 泽州县| 沧源| 韩城市| 琼中| 石家庄市| 罗源县| 石楼县| 班玛县| 泾源县| 集贤县| 敦化市| 万荣县| 赫章县| 凭祥市| 台山市| 同江市| 三台县| 萝北县|