当前位置:网站首页>sleep()方法和wait()方法的区别?安全
sleep()方法和wait()方法的区别?安全
2022-07-29 12:12:00 【妃宫千早】
sleep()方法和wait()方法的区别?安全
sleep方法是Thread的静态方法,wait方法是Object类的普通方法
sleep方法不释放同步锁,wait方法释放同步锁(执行notify方法唤醒wait的线程时是不释放同步锁的)
wait方法用于线程间通讯,而sleep方法用于短暂的暂停线程
sleep针对当前线程,而wait针对被同步代码块加锁的对象
sleep方法是当前线程暂停指定时间,将执行机会让给其它线程,时间结束后进入就绪状态等待
调用wait方法会暂停线程,当前线程释放对象的同步锁,进入等待池(wait pool),只有调用对象的notify或者notifyAll方法唤醒时,线程进入等锁池(lock pool),直到线程再次得到对象的锁才会进入就绪状态
wait方法(notify,notifyAll)只能在同步方法或者同步块中使用(若是在non-synchronized函数或non-synchronizedblock中进行调用,虽然能编译经过,但在运行时会发生illegalMonitorStateException的异常);sleep方法能够在任意位置使用
注:函数
若是线程A但愿当即结束线程B,则能够对线程B对应的Thread实例调用interrupt方法。若是此刻线程B正在wait/sleep/join,则线程B会马上抛出InterruptedException,在catch() {} 中直接return便可安全地结束线程spa
sleep()方法和yield()方法的区别?线程
sleep方法给其余线程机会时不考虑线程优先级(优先级低的也有可能);而yield方法只会给相同优先级或者更高优先级线程机会(若是没有相同或者更高优先级的线程,该线程会继续运行)
线程执行sleep方法进入阻塞状态,执行yield方法进入就绪状态
边栏推荐
猜你喜欢
随机推荐
命里有时终须有--记与TiDB的一次次擦肩而过
【每日SQL打卡】DAY 23丨学生们参加各科测试的次数【难度简单】
惠及6亿人 投资98亿 沿江高铁武宜段最新进展来了!
【每日SQL打卡】DAY 27丨列出指定时间段内所有的下单产品【难度简单】
JVM内存模型如何分配的?
How much is the test environment, starting from the actual needs
redis数据库基本知识学习——基础、常用
MySQL高级_视图
金仓数据库KingbaseES客户端编程接口指南-ODBC(8. 示例说明)
【每日SQL打卡】DAY 23丨向CEO汇报工作的人【难度中等】
关于栈迁移的那些事儿
SQL clock 】 【 daily DAY 23 丨 reporting to the CEO job difficulty moderate 】 【
2.1 Bubble sort (mercifully Sorting)
2022-07-29 Daily: The latest major progress of AlphaFold: complete almost all known protein structure predictions of more than 200 million, fully open
最简单的共享列表服务器KissLists
谷歌“消灭” Cookie 计划延至 2024 年
2.3 Insertion sort
WordPress 固定链接设置
ECCV 2022 | 基于关系查询的时序动作检测方法
文件上传漏洞








