面试突击25:sleep和wait在用法上有哪些不同之处?

2026-05-25 12:380阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1366个文字,预计阅读时间需要6分钟。

面试突击25:sleep和wait在用法上有哪些不同之处?

sleep()方法和wait()方法都用于将线程置于休眠状态。sleep()和wait()方法均可响应interrupt()中断,线程在休眠状态下,若收到中断信号,则可以响应中断,抛出Inter异常。

sleep 方法和 wait 方法都是用来将线程进入休眠状态的,并且 sleep 和 wait 方法都可以响应 interrupt 中断,也就是线程在休眠的过程中,如果收到中断信号,都可以进行响应,并抛出 InterruptedException 异常。那 sleep 和 wait 的区别都有哪些呢?接下来,我们一起来看。

区别一:语法使用不同

wait 方法必须配合 synchronized 一起使用,不然在运行时就会抛出 IllegalMonitorStateException 的异常,如下代码所示:

初看代码好像没啥问题,编译器也没报错,然而当我们运行以上程序时就会发生如下错误:

而 sleep 可以单独使用,无需配合 synchronized 一起使用。

区别二:所属类不同

wait 方法属于 Object 类的方法,而 sleep 属于 Thread 类的方法,如下图所示:

面试突击25:sleep和wait在用法上有哪些不同之处?

区别三:唤醒方式不同

sleep 方法必须要传递一个超时时间的参数,且过了超时时间之后,线程会自动唤醒。

阅读全文

本文共计1366个文字,预计阅读时间需要6分钟。

面试突击25:sleep和wait在用法上有哪些不同之处?

sleep()方法和wait()方法都用于将线程置于休眠状态。sleep()和wait()方法均可响应interrupt()中断,线程在休眠状态下,若收到中断信号,则可以响应中断,抛出Inter异常。

sleep 方法和 wait 方法都是用来将线程进入休眠状态的,并且 sleep 和 wait 方法都可以响应 interrupt 中断,也就是线程在休眠的过程中,如果收到中断信号,都可以进行响应,并抛出 InterruptedException 异常。那 sleep 和 wait 的区别都有哪些呢?接下来,我们一起来看。

区别一:语法使用不同

wait 方法必须配合 synchronized 一起使用,不然在运行时就会抛出 IllegalMonitorStateException 的异常,如下代码所示:

初看代码好像没啥问题,编译器也没报错,然而当我们运行以上程序时就会发生如下错误:

而 sleep 可以单独使用,无需配合 synchronized 一起使用。

区别二:所属类不同

wait 方法属于 Object 类的方法,而 sleep 属于 Thread 类的方法,如下图所示:

面试突击25:sleep和wait在用法上有哪些不同之处?

区别三:唤醒方式不同

sleep 方法必须要传递一个超时时间的参数,且过了超时时间之后,线程会自动唤醒。

阅读全文