浏览量:215次
java wait是怎样的呢?下面就让我们一起来了解一下吧:
wait()方法是属于java中的一个方法,它的作用是能够让当前线程进入等待状态,同时,wait()也会让当前线程释放它所持有的锁。直到其他线程调用此对象的notify()方法或者notifyAll()方法,当前线程被唤醒(也就是进入“就绪状态”)。
说明:
notify()和notifyAll()方法的作用,则是用于唤醒当前对象上的等待线程;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线程等待,而是当前执行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);//使当前线程阻塞1秒 } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(Thread.currentThread().getName()+" call notify()"); this.notify(); } } }
[声明]本网转载网络媒体稿件是为了传播更多的信息,此类稿件不代表本网观点,本网不承担此类稿件侵权行为的连带责任。故此,如果您发现本网站的内容侵犯了您的版权,请您的相关内容发至此邮箱【779898168@qq.com】,我们在确认后,会立即删除,保证您的版权。