java意向锁实现方式
时间: 2024-01-15 16:09:28 浏览: 91
Java中的意向锁是指在同步代码块中,线程获取了某个对象的锁之后,再次获取同一个对象的锁时,会自动升级为意向锁,即表示当前线程即将获取该对象的锁。意向锁有两种实现方式,分别是:
1.适应性自旋锁
当线程首次尝试获取锁时,锁处于未锁定状态,当前线程是可以获取锁的。此时,JVM会将该锁的状态设置为“锁定”状态,同时,将线程自身记录在锁上,成为“持有锁的线程”。接下来,当另外一个线程来尝试获取该锁时,当前线程将会进入一个自旋的状态,尝试再次获取锁。如果获取失败,当前线程会通过循环等待的方式进行尝试,直到获取到锁为止。
2.轻量级锁
当线程持有的锁对象在内存中的标记位还未被置为“锁定”状态时,线程可以直接将标记位设置为“锁定”状态,并将该对象的头部数据拷贝到线程自己的栈中。此时,该对象会处于轻量级锁状态,其他线程的请求会被阻塞。轻量级锁的实现方式可以避免线程频繁地对锁进行竞争,提高代码执行效率。
阅读全文