天天看点

线程中sleep()方法和wait()方法有什么区别?

线程中sleep()方法和wait()方法有什么区别?

  • 1.原理不同。

    sleep()方法

    是来自Thread类的静态方法,是线程用来控制自身流程的,它会使某个线程阻塞一段时间,等计时时间一到,此线程就会

    自动“苏醒”

    。而

    wait()方法

    是来自Object类的方法,用于线程间的通信,它也可以使线程阻塞,不过要

    等其他线程调用了notify()或者notifyAll()方法该线程才能苏醒

  • 2.对锁处理机制不同。

    sleep()方法

    的主要作用是让线程暂停一段时间,并

    不会释放掉自己持有的锁

    ,而调用

    wait()方法

    的线程,会

    释放掉它所占有的锁

  • 3.使用区域不同。

    sleep()方法

    可以在任何代码块中的

    任何位置使用

    ,而

    wait()方法

    必须要在

    同步方法或者同步块中使用

  • 4.是否捕获异常不同。

    sleep()必须要捕获异常

    ,而

    wait()不需要捕获异常