java中的sleep()和wait()的区别

对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。

sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。

在调用sleep()方法的过程中,线程不会释放对象锁。

而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备

获取对象锁进入运行状态。

什么意思呢?

举个列子说明:

* com.b510.test; * java中的sleep()和wait()的区别 Hongten 9 * @date 2013-12-10 TestD { main(String[] args) {14new Thread(new Thread1()).start();15try {16Thread.sleep(5000);17} catch (Exception e) {18 e.printStackTrace();19 }20new Thread(new Thread2()).start();21 }Thread1 implements Runnable{24 @Override run(){26synchronized (TestD.class) {27System.out.println(“enter thread1…”);28System.out.println(“thread1 is waiting…”);29try {TestD.class.wait();32} catch (Exception e) {33 e.printStackTrace();34 }35System.out.println(“thread1 is going on ….”);36System.out.println(“thread1 is over!!!”);37 }38 }39 }Thread2 implements Runnable{42 @Override run(){44synchronized (TestD.class) {45System.out.println(“enter thread2….”);46System.out.println(“thread2 is sleep….”);TestD.class.notify();49//==================50//区别51//如果我们把代码:TestD.class.notify();给注释掉,,即TestD.class调用了wait()方法,但是没有调用notify() {54//sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,55//但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。Thread.sleep(5000);58} catch (Exception e) {59 e.printStackTrace();60 }61System.out.println(“thread2 is going on….”);62System.out.println(“thread2 is over!!!”);63 }64 }65 }66 }当一个人真正觉悟的一刻,他放弃追寻外在世界的财富,

java中的sleep()和wait()的区别

相关文章:

你感兴趣的文章:

标签云: