sleep和wait的区别(转)
程序员文章站
2022-04-10 23:31:37
原理不同 sleep是Thread类的静态方法,是线程用来控制自身流程的,它会使此线程暂停执行指定的时间,而把执行机会让给其他的线程,等到计时时间到,此线程会自动苏醒。 wait是Object类的方法,用于线程间的通信,这个方法会使当前拥有该对象锁的进程等待,直到其他线程调用notify方法才醒来, ......
- 原理不同
sleep是thread类的静态方法,是线程用来控制自身流程的,它会使此线程暂停执行指定的时间,而把执行机会让给其他的线程,等到计时时间到,此线程会自动苏醒。
wait是object类的方法,用于线程间的通信,这个方法会使当前拥有该对象锁的进程等待,直到其他线程调用notify方法才醒来,也可以指定时间自己醒来。
- 对锁的处理机制不同
由于sleep方法的主要作用是让线程休眠指定一段时间,在时间到时自动恢复,不涉及线程间的通信,因此,调用sleep方法并不会释放掉锁。
但是调用wait方法的时候,线程会释放掉它所占用的锁,从而使线程所在对象中的其他synchronized数据可以被其他线程使用。
- 使用的区域不同
由于wait方法的特殊含义,所以它必须放在同步控制方法或者同步语句块中使用,而sleep方法则可以放在任何地方使用。
- 异常的捕获
sleep方法必须捕获异常,而wait、notify以及notifyall不需要捕获异常,在sleep的过程中,有可能别其他对象调用其interrupt(),产生interruptedexception异常。
sleep不会释放锁标志,容易导致死锁的发生,所以一般情况下,不推荐使用sleep方法,而是使用wait方法。
原文地址:https://www.jianshu.com/p/c83a119ef54a
推荐阅读
-
javascript中apply、call和bind的使用区别
-
PHP 里面call_user_func和$class->$func()的区别
-
ThinkPHP快捷步骤D和M的区别
-
1000万级粉丝和几千粉丝的微信开发有多大的区别?
-
eip和其他的cms管理系统有什么区别
-
php学习之道:php中is_file和file_exist的区别,and判断目录is_dir
-
转帖:一分钟教会你用google图表中的曲线图和柱状图
-
华为nova8和华为nova8Plus的区别哪个更值得入手
-
PHP中exec函数和shell_exec函数的区别,execshell_exec_PHP教程
-
mysql_connect localhost和127.0.0.1的区别(网络层阐述),