国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

java sleep()和wait()的區(qū)別點(diǎn)總結(jié)

瀏覽:4日期:2022-08-13 13:49:00
1、區(qū)別說明

wait()是Object的方法,sleep()是Thread的方法。

wait()必須采用同步方法,不需要sleep()方法。

線程在同步方法中執(zhí)行sleep()方法,不釋放monitor鎖,wait()方法釋放monitor鎖。

短暫休眠后,sleep()方法會(huì)主動(dòng)退出阻塞,而wait()方法需要在沒有指定wait時(shí)間的情況下被其他線程中斷才能退出阻塞。

2、實(shí)例

import java.text.SimpleDateFormat;import java.util.Date;public class TestSleepAndWait {public static void main(String[] args) {new Thread1().start();try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}new Thread2().start();}}class Thread1 extends Thread{private void sout(String s){System.out.println(s+' '+new SimpleDateFormat('HH:mm:ss:SS').format(new Date()));}@Overridepublic void run() {sout('enter Thread1.run');synchronized (TestSleepAndWait.class){//wait只能在同步代碼塊或者同步方法中使用sout('Thread1 is going to wait');try {TestSleepAndWait.class.wait(); // 這里只能使用持有鎖TestSleepAndWait.class.wait(),使用其他對(duì)象則報(bào)錯(cuò)java.lang.IllegalMonitorStateException} catch (InterruptedException e) {e.printStackTrace();}sout('after waiting, thread1 is going on');sout('thread1 is over');}}}class Thread2 extends Thread{private void sout(String s){System.out.println(s+' '+new SimpleDateFormat('HH:mm:ss:SS').format(new Date()));}@Overridepublic void run() {sout('enter Thread2.run');synchronized (TestSleepAndWait.class){//wait只能在同步代碼塊或者同步方法中使用sout('Thread2 is going to notify');TestSleepAndWait.class.notify(); 這里只能使用持有鎖TestSleepAndWait.classsout('thread2 is going to sleep 10ms');try {Thread.sleep(10);} catch (InterruptedException e) {e.printStackTrace();}sout('after sleeping, thread2 is going on');sout('thread2 is over');}}}

內(nèi)容擴(kuò)展:

/** * */package com.b510.test;/** * java中的sleep()和wait()的區(qū)別 * @author Hongten Java學(xué)習(xí)交流QQ群:589809992 我們一起學(xué)Java! * @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()方法,線程會(huì)放棄對(duì)象鎖,進(jìn)入等待此對(duì)象的等待鎖定池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....');//只有針對(duì)此對(duì)象調(diào)用notify()方法后本線程才進(jìn)入對(duì)象鎖定池準(zhǔn)備獲取對(duì)象鎖進(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í)間到了又會(huì)自動(dòng)恢復(fù)運(yùn)行狀態(tài)。 //在調(diào)用sleep()方法的過程中,線程不會(huì)釋放對(duì)象鎖。 Thread.sleep(5000);} catch (Exception e) { e.printStackTrace();}System.out.println('thread2 is going on....');System.out.println('thread2 is over!!!'); } } }}

到此這篇關(guān)于java sleep()和wait()的區(qū)別點(diǎn)總結(jié)的文章就介紹到這了,更多相關(guān)java sleep()和wait()的區(qū)別內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 欧美成人精品免费播放 | 亚洲综合成人网 | 免费一级欧美大片久久网 | 国产精品色午夜视频免费看 | 亚洲精品三区 | 日韩在线亚洲 | 日本人一级毛片免费视频 | 日本午夜三级 | 久久免费视频99 | 嫩小性性性xxxxbbbb | 中国国产一级毛片视频 | 国产精品va一级二级三级 | 日韩毛片免费在线观看 | 国产成人福利免费观看 | 永久免费精品视频 | 国产成人在线视频免费观看 | 18视频网站在线观看 | a级毛片免费| 中国黄色一级毛片 | 国产欧美精品午夜在线播放 | 日韩一区二区三区在线视频 | 国产婷婷一区二区在线观看 | 成年人在线观看免费 | 国产精品久久久久久一区二区 | 欧美成人自拍视频 | 又黄又爽又刺激的视频 | www.成人在线视频 | 草草视频在线免费观看 | 国产日韩欧美三级 | 久久er精品视频 | 国产亚洲一欧美一区二区三区 | 在线观看一级片 | 免费日本视频 | 高清韩国a级特黄毛片 | 男女晚上爱爱的视频在线观看 | 日韩经典欧美精品一区 | 成年人网站黄 | 国产伦精品一区二区三区四区 | 韩日毛片 | 成人a在线观看 | 国产成人精品福利网站在线观看 |