java wait是怎樣的呢?下面就讓我們一起來了解一下吧:
wait()方法是屬于java中的一個方法,它的作用是能夠讓當(dāng)前線程進入等待狀態(tài),同時,wait()也會讓當(dāng)前線程釋放它所持有的鎖。直到其他線程調(diào)用此對象的notify()方法或者notifyAll()方法,當(dāng)前線程被喚醒(也就是進入“就緒狀態(tài)”)。
說明:
notify()和notifyAll()方法的作用,則是用于喚醒當(dāng)前對象上的等待線程;notify()方法是喚醒單個線程,而notifyAll()是喚醒所有的線程。
參考范例:
package com.citi.test.mutiplethread.demo0503; import java.util.Date; public class WaitTest { public static void main(String[] args) { ThreadA t1=new ThreadA("t1"); System.out.println("t1:"+t1); synchronized (t1) { try { //啟動線程 System.out.println(Thread.currentThread().getName()+" start t1"); t1.start(); //主線程等待t1通過notify喚醒。 System.out.println(Thread.currentThread().getName()+" wait()"+ new Date()); t1.wait();// 不是使t1線程等待,而是當(dāng)前執(zhí)行wait的線程等待 System.out.println(Thread.currentThread().getName()+" continue"+ new Date()); } catch (Exception e) { e.printStackTrace(); } } } } class ThreadA extends Thread{ public ThreadA(String name) { super(name); } @Override public void run() { synchronized (this) { System.out.println("this:"+this); try { Thread.sleep(2000);//使當(dāng)前線程阻塞1秒 } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(Thread.currentThread().getName()+" call notify()"); this.notify(); } } }
以上就是小編的分享了,希望能夠幫助到大家。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com