我们常用到加锁方式有synchronized关键字,还有ReentrantLock,那如何利用Java模拟一把锁。
开始构思:
加锁就是为了让任何时刻,都只有一个线程访问共享资源,如果共享资源已经被线程占用,那其他线程来了只能选择等待,占用线程释放资源以后再唤醒其他等待线程。于是锁的基本样子就呼之欲出了,简单粗暴:
public synchronized void lock() {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public synchronized void unlock() {