学习笔记(22):19年并发编程及原理视频培训教程入门到精通-实现属于自己的锁...

立即学习:https://edu.csdn.net/course/play/9827/208800?utm_source=blogtoedu

import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;


public class MyLock implements Lock{
	private  boolean flag=false;
	private Thread t=null;
	private int count=0;
	@Override
	public synchronized void lock() {
		// TODO Auto-generated method stub
		if(flag&&t!=Thread.currentThread()){
		try {
			wait();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		}
		count++;
		t=Thread.currentThread();
		flag=true;
	}
	@Override
	public synchronized void unlock() {
		// TODO Auto-generated method stub
		if(t==Thread.currentThread()){
			if(count==0){
				notify();
				flag=false;
			}
		}
	}
	@Override
	public void lockInterruptibly() throws InterruptedException {
		// TODO Auto-generated method stub
		
	}

	@Override
	public boolean tryLock() {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean tryLock(long time, TimeUnit unit)
			throws InterruptedException {
		// TODO Auto-generated method stub
		return false;
	}


	@Override
	public Condition newCondition() {
		// TODO Auto-generated method stub
		return null;
	}

}

自定义一个可重入锁

发布了22 篇原创文章 · 获赞 21 · 访问量 253

猜你喜欢

转载自blog.csdn.net/weixin_45831970/article/details/104381903