面试突击25:sleep和wait在用法上有哪些不同之处?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1366个文字,预计阅读时间需要6分钟。
sleep()方法和wait()方法都用于将线程置于休眠状态。sleep()和wait()方法均可响应interrupt()中断,线程在休眠状态下,若收到中断信号,则可以响应中断,抛出Inter异常。
sleep 方法和 wait 方法都是用来将线程进入休眠状态的,并且 sleep 和 wait 方法都可以响应 interrupt 中断,也就是线程在休眠的过程中,如果收到中断信号,都可以进行响应,并抛出 InterruptedException 异常。那 sleep 和 wait 的区别都有哪些呢?接下来,我们一起来看。
区别一:语法使用不同wait 方法必须配合 synchronized 一起使用,不然在运行时就会抛出 IllegalMonitorStateException 的异常,如下代码所示:
初看代码好像没啥问题,编译器也没报错,然而当我们运行以上程序时就会发生如下错误:
而 sleep 可以单独使用,无需配合 synchronized 一起使用。
wait 方法属于 Object 类的方法,而 sleep 属于 Thread 类的方法,如下图所示:
sleep 方法必须要传递一个超时时间的参数,且过了超时时间之后,线程会自动唤醒。
本文共计1366个文字,预计阅读时间需要6分钟。
sleep()方法和wait()方法都用于将线程置于休眠状态。sleep()和wait()方法均可响应interrupt()中断,线程在休眠状态下,若收到中断信号,则可以响应中断,抛出Inter异常。
sleep 方法和 wait 方法都是用来将线程进入休眠状态的,并且 sleep 和 wait 方法都可以响应 interrupt 中断,也就是线程在休眠的过程中,如果收到中断信号,都可以进行响应,并抛出 InterruptedException 异常。那 sleep 和 wait 的区别都有哪些呢?接下来,我们一起来看。
区别一:语法使用不同wait 方法必须配合 synchronized 一起使用,不然在运行时就会抛出 IllegalMonitorStateException 的异常,如下代码所示:
初看代码好像没啥问题,编译器也没报错,然而当我们运行以上程序时就会发生如下错误:
而 sleep 可以单独使用,无需配合 synchronized 一起使用。
wait 方法属于 Object 类的方法,而 sleep 属于 Thread 类的方法,如下图所示:
sleep 方法必须要传递一个超时时间的参数,且过了超时时间之后,线程会自动唤醒。

