关于锁释放两小段代码

第一小段代码,queue是个BlockingQueue阻塞队列

            synchronized (waitLock){
               KaiFaBan takeValue=queue.take();//阻塞
            }

关于这段代码,想问下,take()一直处于阻塞状态的话,会不会释放锁对象waitLock???

第二小段代码;

           while (exec.isTerminated()){
              synchronized (waitLock){
                System.out.println("开始处理IO等其他耗时工作");
                //线程开启长耗时工作
                caozuo(s);
                break;
                //break之后的代码
              }
            }
            

关于这段代码,想问下break之后,会不会释放锁对象waitLock???谢谢

阅读 1.5k
2 个回答
  1. 不会,因为还在同步块里面
  2. 会,因为会离开同步快

synchronized内调用wait()会释放锁,否则不会

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题