网站建设 猴王网络,wordpress 解析漏洞,编译django做的网站,做的王者荣耀钓鱼网站【JUC】显示锁 1. 显式锁 1. 显式锁
与 Java 内置锁#xff08;synchronized#xff09;不同#xff0c;JUC 显式锁提供了一种非常灵活的、Java 语言基本的 锁#xff0c;这种锁的使用非常灵活#xff0c;可以进行无条件的、可轮询的、定时的、可中断的锁获取和释放操 作… 【JUC】显示锁 1. 显式锁 1. 显式锁
与 Java 内置锁synchronized不同JUC 显式锁提供了一种非常灵活的、Java 语言基本的 锁这种锁的使用非常灵活可以进行无条件的、可轮询的、定时的、可中断的锁获取和释放操 作。由于 JUC 锁的加锁和解锁的方法都是通过 Java API 显示进行的所以也叫显式锁。
使用 Java 内置锁时不需要通过 Java 代码显式地对同步对象的监视器Monitor进行抢占 和释放这些工作由 JVM 底层完成。而且任何一个 Java 对象都能作为一个内置锁使用所以 Java 的对象锁使用起来非常方便。但是Java 内置锁的功能相对单一不具备一些比较高级的锁 功能比如
1限时抢锁在抢锁时设置超时时长如果超时还未获得锁就放弃不至于无限等下去。 2可中断抢锁在抢锁时外部线程给抢锁线程发一个中断信号就能唤起等待锁的线 程并终止抢占过程。 3多个等待队列为锁维持多个等待队列以便提高锁的效率。比如在生产者消费者模式 实现中生产者和消费者共用一把锁该锁上维持两个等待队列一个生产者队列一个消费者 队列。
除了以上功能问题之外Java 对象锁还存在性能问题。在竞争稍微激烈的情况下Java 对象 锁会膨胀为重量级锁基于操作系统的 Mutex Lock 实现而重量级锁的线程阻塞和唤醒操作 需要进程在内核态和用户态之间来回切换导致其性能非常低。所以迫切需要提供一种新的锁 来提升争用激烈场景下锁的性能。
Java 显式锁就是为了解决这些 Java 对象锁的功能问题、性能问题而生。JDK5 版本引入了 Lock 接口Lock 是 Java 代码级别的锁。为了与 Java 对象锁相区分Lock 接口叫显式锁接口其 对象实例叫做显式锁对象。