目录
一、重入锁的理解
- 一、重入锁的理解
- 二、手动实现锁示例
- 三、手动实现重入锁示例
- 参考此博文: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
关注
打赏
热门博文
- Netty—— 概念剖析(NIO vs BIO)
- Netty——网络编程 NIO(Selector处理accept事件)代码示例
- CompletableFuture异步编排(多任务组合)
- CompletableFuture异步编排(两任务组合——两个任务必须都完成才触发另一个任务 )
- CompletableFuture异步编排(线程串行化代码示例)
- CompletableFuture异步编排(handle最终处理)
- CompletableFuture异步编排(计算完成回调代码示例)
- hutool工具导出excel代码示例
- CompletableFuture异步编排(开启异步编程代码示例)
- java 获取音频、视频文件时长代码示例