目录
一、重入锁的理解
- 一、重入锁的理解
- 二、手动实现锁示例
- 三、手动实现重入锁示例
- 参考此博文:https://wwwxz.blog.csdn.net/article/details/115761429
1、创建MyLock类并实现Lock接口
package com.xz.thread.t9;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
/**
* @description: 手动实现锁
* 其中只实现lock和unlock方法
* @author: xz
*/
public class MyLock implements Lock {
private boolean isLocked = false;
//获取锁
@Override
public synchronized void lock() {
while(isLocked){
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
isLocked =true;
}
//释放锁
@Override
public synchronized void unlock() {
isLocked =false;
notify();
}
@Override
public void lockInterruptibly() throws InterruptedException {
}
@Override
public boolean tryLock() {
return false;
}
@Override
public boolean tryLock(long time, TimeUnit unit) throws InterruptedException {
return false;
}
@Override
public Condition newCondition() {
return null;
}
}
2、创建多线程获取值的Sequeues类
package com.xz.thread.t9;
/**
* @description: 手动实现锁示例
* @author: xz
*/
public class Sequeues {
private int value;
MyLock myLock=new MyLock();
public int getValue(){
myLock.lock();
value++;
myLock.unlock();
return value;
}
public static void main(String[] args) {
Sequeues sequeues=new Sequeues();
new Thread(new Runnable() {
@Override
public void run() {
for(int i=0;i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?