java锁的面试题,java死锁面试题

  java锁的面试题,java死锁面试题

  如何解决写爬虫IP受阻的问题?立即使用。

  面试问题:

  你了解java中的锁吗?有哪几种锁?两者有什么区别?跟我说说。

  (学习视频分享:java视频教程)

  回答:

  大致可以分为这几点:什么是锁,有什么用途,锁有哪些种类,锁的区别。

  一:锁是什么,有什么用?

  锁主要用于同步资源共享。只有获得锁,才能访问同步码;否则,等待其他线程使用完锁后释放它。

  二:锁有哪些种类?

  这个主要针对:同步和锁定(因为面试就是问这两个)。

  Synchronize:可以放在方法前面;也可以放在代码块前面,但是需要指定锁定的对象。通常与wait、notify和notifyAll一起使用。等待:释放被占用的对象锁,释放CPU。Sleep:它释放CPU,但不释放被占用的对象锁。

  通知:唤醒等待队列中的一个线程以获取访问锁。

  NotifyAll:唤醒等待队列中等待该对象锁的所有线程,并让它们竞争锁。

  Lock:具有与synchronize相同的语义,但是增加了一些其他特性,比如中断锁等待和定时锁等待,所以可以使用lock代替synchronize。提供的方法有:

  (更多相关面试问题推荐:java面试问答)

  Lock():锁是以阻塞的方式获得的,直到获得并等待才会被中断。

  TryLock():得到,得到则返回true,没有得到则返回false。

  Trlock(长超时,时间单位单位):如果被获取,则返回true如果不获取,则返回false。

  LockInterruptibly():类似于lock,但是它将进入睡眠状态,直到获得锁或者当前线程被另一个线程中断。

  三:两者的区别?

  性能不一致:当资源竞争被激发时,lock的性能优于synchronize,当竞争未被激发时,synchronize的性能优于lock。

  锁机制不同:synchronize是在JVM级别实现的,系统会监控锁是否被释放。锁是通过代码实现的,需要手动释放。它在finally块中释放。锁可以以非阻塞的方式获得。

  不同用法:synchronize可以用在代码块和方法中。通过锁代码的实现,有了更准确的线程语义。

  推荐:java入门教程以上是java面试3354锁的详细内容。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: