首页 > 其他分享 >wait与sleep区别

wait与sleep区别

时间:2022-08-30 13:34:10浏览次数:57  
标签:contains synchronized 区别 Object sleep als wait

wait与sleep区别在于:

  1. wait会释放所有锁而sleep不会释放锁资源.
  2. wait只能在同步方法和同步块中使用,而sleep任何地方都可以.
  3. wait无需捕捉异常,而sleep需要.

两者相同点:都会让渡CPU执行时间,等待再次调度!

class Allocator {
  private List<Object> als;
  // 一次性申请所有资源
  synchronized void apply(
    Object from, Object to){
    // 经典写法
    while(als.contains(from) ||
         als.contains(to)){
      try{
        wait();
      }catch(Exception e){
      }   
    } 
    als.add(from);
    als.add(to);  
  }
  // 归还资源
  synchronized void free(
    Object from, Object to){
    als.remove(from);
    als.remove(to);
    notifyAll();
  }
}

标签:contains,synchronized,区别,Object,sleep,als,wait
From: https://www.cnblogs.com/ukzq/p/16638953.html

相关文章

  • delete和truncate删除表数据的区别
    相同点:1,都能删除表数据,都不会删除表结构不同点:1,delete删除表数据时自增不归零,truncate清空表自增归零,重新设置自增列2,truncate清空表数据不会影响事务 拓展:delete删......
  • vue2和vue3的区别?
    vue2和vue3的主要区别在于以下几点:1、生命周期函数钩子不同2、数据双向绑定原理不同3、定义变量和方法不同4、指令和插槽的使用不同5、API类型不同6、是否支持碎片7......
  • BrowserRouter和HashRouter的区别
    底层原理不一样BrowserRouter使用的是H5的historyAPI,不兼容IE9及以下版本。HashRouter使用的是URL的hash值path表现形式不一样BrowserRouter的路径中没有#Has......
  • Oracle 服务名/实例名,Service_name 和Sid的区别
    Oracle服务名/实例名,Service_name和Sid的区别 Service_name和Sid的区别Service_name:该参数是由oracle8i引进的。在8i以前,使用SID来表示标识数据库的一个实例,但是在......
  • Mysql Count的区别
    1.count(1)和count(*)执行计划从执行计划来看count(1)和count()的效果是一样的。当表的数据量大些时(1W以上),对表作分析之后,使用count(1)比使用count()用时多。当......
  • Linux输出重定向>和>>的区别是什么?
    Linux输出重定向>和>>的区别是什么-百度经验 https://jingyan.baidu.com/article/358570f64345c4ce4724fcba.htmlLinux输出重定向有>和>>,如果不清楚他们的区别,混淆......
  • unix kill -9 与kill 有什么区别
    unixkill-9与kill有什么区别_百度知道 https://zhidao.baidu.com/question/289182098.html区别:1、kill-9id:一般不加参数kill是使用15来杀,这相当于正常停止进程,停......
  • 【MySQL】DDL因Waiting for table metadata lock卡住
    在数据库空闲时间,对表做碎片整理:altertablemy_abcengine=innodb;发现会话被阻塞,显示状态是:Waitingfortablemetadatalock 手动断开alter操作后,通过showpr......
  • stopPropagation, preventDefault 和 return false 的区别
    stopPropagation阻止事件的冒泡和捕获。因为事件可以在各层级的节点中传递,不管是冒泡还是捕获,有时我们希望事件在特定节点执行完之后不再传递,可以使用事件对象的s......
  • 彻底弄懂bind,apply,call三者的区别 (转)
    为什么要改变this指向?我们知道bind,call,apply的作用都是用来改变this指向的,那为什么要改变this指向呢?请看下面的例子:varname="lucy";letobj={name:"martin",say:......