synchronized和ReentrantLock可重入锁验证的操作方法
今天就跟大家聊聊有关synchronized和ReentrantLock可重入锁验证的操作方法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

创新互联是一家专注于成都网站设计、成都网站制作、外贸网站建设与策划设计,开州网站建设哪家好?创新互联做网站,专注于网站建设10余年,网设计领域的专业建站公司;建站业务涵盖:开州等地区。开州做网站价格咨询:18982081108
一个线程已经获得了一把锁,则可以再多次重复获得这把已经获取的锁而不会发生死锁(可类比生活大门锁示例)。
前言
可重入锁又名递归锁,是指在同一个线程在外层方法获取锁的时候,再进入该线程的内层方法会自动获取锁(前提,锁对象得是同一个对象),不会因为之前已经获取过还没释放而阻塞。Java中ReentrantLock和synchronized都是可重入锁,可重入锁的一个优点是可一定程度避免死锁。
一、synchronized可重入验证
package com.lau.javabase.lock;
/**
* 隐式锁
*/
public class ReenterSynchronizedTest {
public synchronized void print(){
System.out.println("外层调用...");
//中层调用
print2();
//内层调用
print3();
}
public synchronized void print2(){
System.out.println("中层调用...");
}
public synchronized void print3(){
System.out.println("内层调用...");
}
public static void main(String[] args) {
ReenterSynchronizedTest test = new ReenterSynchronizedTest();
// test.print();
test.print4();
}
/**
* 同一个线程可以多次获得同一把锁
*/
public void print4(){
synchronized (this){
System.out.println("外层调用呀...");
synchronized (this){
System.out.println("中层调用呀...");
synchronized (this){
System.out.println("内层调用呀...");
}
}
}
}
}输出:
外层调用呀... 中层调用呀... 内层调用呀...
二、ReenTrantLock可重入性验证
package com.lau.javabase.lock;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
/**
* 显示锁
*/
public class ReenterLockTest {
public static void main(String[] args) {
ReenterLockTest test = new ReenterLockTest();
test.print();
new Thread(() -> test.print2(),"t").start();
}
private Lock lock = new ReentrantLock();
/**
* 同一个线程可以多次获得同一把锁
*/
public void print(){
try{
lock.lock();
lock.lock();
System.out.println("外层调用");
try{
lock.lock();
System.out.println("中层调用");
try{
lock.lock();
System.out.println("内层调用");
}
finally {
lock.unlock();
}
}
finally {
lock.unlock();
}
}
finally {
lock.unlock();
// lock.unlock();
}
}
public void print2(){
try{
lock.lock();
System.out.println("come on!");
}
finally {
lock.unlock();
}
}
}输出:
外层调用 中层调用 内层调用
看完上述内容,你们对synchronized和ReentrantLock可重入锁验证的操作方法有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。
本文题目:synchronized和ReentrantLock可重入锁验证的操作方法
文章转载:http://www.jxjierui.cn/article/ieisce.html


咨询
建站咨询
