0
点赞
收藏
分享

微信扫一扫

7.并发编程-锁的探究

苦茶如歌 2022-04-02 阅读 65

可重入锁

synchronized

ReentrantLock

跟踪源码state变化

首先新建一个类,写上下面方法,

public class LockTest {
	//非公平、公平锁
	private ReentrantLock noFairLock = new ReentrantLock(false);
	private ReentrantLock fairLock = new ReentrantLock(true);
	/**
     *
     * 非公平锁
     */

    public void testNoFairLock() {
        noFairLock.lock();
        try {
            SleepUtils.sleepSeconds(1);
            System.out.println(Thread.currentThread().getName() + "正在使用【非公平锁】");
            System.out.println("非公平锁打开了家里的大门....");
            entryRoomsNoFair();
        } finally {
            noFairLock.unlock();
        }
    }

    public void entryRoomsNoFair() {
        noFairLock.lock();
        try {
            System.out.println("非公平锁打开大门后走进他的房间...");
            sleepNoFair();
        } finally {
            noFairLock.unlock();
        }
    }

    public void sleepNoFair() {
        noFairLock.lock();
        try {
            System.out.println("非公平锁进入房间后开始睡觉...");
        } finally {
            noFairLock.unlock();
        }
    }
	//
    @Test
    public void testNoFair() {
        testNoFairLock();
    }
}
举报

相关推荐

0 条评论