×

Java:sleep和wait方法的区别

作者:andy0012020.07.28来源:Web前端之家浏览:125评论:0
关键词:Java
微信公众号

微信公众号

Java:sleep和wait方法的区别:

sleep:

sleep 方法属于 Thread 类中方法,表示让一个线程进入睡眠状态,等待一定的时间之后,自动醒来进入到可运行状态,不会马上进入运行状态,因为线程调度机制恢复线程的运行也需要时间,一个线程对象调用了 sleep方法之后,并不会释放他所持有的所有对象锁,所以也就不会影响其他进程对象的运行。

但在 sleep 的过程中过程中有可能被其他对象调用它的 interrupt() ,产生 InterruptedException 异常,如果你的程序不捕获这个异常,线程就会异常终止,进入 TERMINATED 状态,如果你的程序捕获了这个异常,那么程序就会继续执行catch语句块(可能还有 finally 语句块)以及以后的代码。

wait:

wait 属于 Object 的成员方法,一旦一个对象调用了wait方法,必须要采用 notify() 和 notifyAll() 方法唤醒该进程;

如果线程拥有某个或某些对象的同步锁,那么在调用了 wait() 后,这个线程就会释放它持有的所有同步资源,而不限于这个被调用了 wait() 方法的对象。

wait() 方法也同样会在 wait 的过程中有可能被其他对象调用 interrupt() 方法而产生 。

sleep和wait方法的区别是:

  • sleep 来自 Thread 类,而 wait 来自 Object 类

  • sleep 方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或方法

  • wait,notify和 notifyAll 只能在同步控制方法或者同步控制块里面使用,而 sleep 可以在任何地方使用

  • sleep 必须捕获异常,而 wait , notify 和 notifyAll 不需要捕获异常


温馨提示:本文作者系 ,经Web前端之家编辑修改或补充,转载请注明出处和本文链接:
https://jiangweishan.com/article/ja09jsdj9023804823082343.html

网友评论文明上网理性发言 已有0人参与

发表评论:

最新留言

  • ajoy

    说法可以是一样的,毕竟JS和JQ都是有“血缘关系”的,你可以自己改下不就可以了吗,哈哈!...

  • 访客

    标题是JS用了JQ误人子弟呢...

  • absoy

    vue居然还能这么玩,期待你们vue3.0中文版教程。...

  • caij2

    github也中了新冠病毒了吧,哈哈!...

  • 访客

    收藏啦...

  • Web前端之家

    当然都可以被import,如何去设置,还要看你的具体项目要求。...

  • 访客

    exportdefault和vue的实例有啥子区别呢都可以被import...

  • Web前端之家

    可以加QQ群295431592咨询。...

首页|JavaScript|HTML|HTML4|HTML5|CSS3|开发工具|性能优化|移动开发|前端教程|性能优化|开发工具|酷站欣赏|UI设计|前端教程

Copyright © 2020 Web前端之家(www.jiangweishan.com) 版权所有 All Rights Reserved.
粤ICP备12067512号-1

Copyright Your WebSite.Some Rights Reserved.

Powered By Z-BlogPHP 1.6.4 Valyria