ReentrantLock实现同步
来源:互联网 发布:淘宝企业店铺费用 编辑:程序博客网 时间:2024/06/05 05:44
ReentrantLock 也可以实现synchronized方法、代码块的同步效果。
ReentrantLock 实现同步代码如下:
1 新建一个service类
public class MyService {private static ReentrantLock lock = new ReentrantLock();public static void MethodA(){lock.lock();System.out.println("方法A正在执行1");System.out.println("方法A正在执行2");System.out.println("方法A正在执行3");System.out.println("方法A正在执行4");System.out.println("方法A正在执行5");lock.unlock();}public static void MethodB(){lock.lock();System.out.println("方法B正在执行1");System.out.println("方法B正在执行2");System.out.println("方法B正在执行3");System.out.println("方法B正在执行4");System.out.println("方法B正在执行5");lock.unlock();}}
2 新建一个测试类:
public class Test {public static void main(String[] args) {Runnable runnableA = new Runnable() {@Overridepublic void run() {MyService.MethodA();}};Runnable runnableB = new Runnable() {@Overridepublic void run() {MyService.MethodB();}};Thread threadA = new Thread(runnableA);Thread threadB = new Thread(runnableB);threadB.start();threadA.start();}}输出结果:
方法A正在执行1
方法A正在执行2
方法A正在执行3
方法A正在执行4
方法A正在执行5
方法B正在执行1
方法B正在执行2
方法B正在执行3
方法B正在执行4
方法B正在执行5
如果去掉service类的所有lock.unlock(); 和 lock.lock(); 运行结果如下
方法B正在执行1
方法A正在执行1
方法B正在执行2
方法A正在执行2
方法B正在执行3
方法A正在执行3
方法B正在执行4
方法A正在执行4
方法B正在执行5
方法A正在执行5
可以看到在lock.lock();和lock.unlock(); 包围的代码是同步执行的。方法MethodA和MethodB的同步代码公用一个锁 lock
阅读全文
0 0
- ReentrantLock实现同步
- 使用ReentrantLock实现线程同步
- 使用ReentrantLock实现线程同步
- 4.1.1ReentrantLock实现同步,测试1
- 4.1.1ReentrantLock实现同步,测试2
- ReentrantLock同步
- synchronized 与 ReentrantLock 同步代码块简单实现
- Java多线程同步(锁)的实现方法(synchronised 与reentrantlock)
- ReentrantLock同步锁
- 同步锁ReentrantLock
- 【Java基础之线程同步(三)】使用ReentrantLock Condition实现线程同步
- 同步方法ReentrantLock和Synchronized
- ReentrantLock与synchronized同步锁
- 比较ReentrantLock和synchronized和信号量Semaphore实现的同步性能
- 比较ReentrantLock和synchronized和信号量Semaphore实现的同步性能
- ReentrantLock实现源码剖析
- ReentrantLock实现原理
- ReentrantLock实现原理分析
- Linux压缩与解压缩命令
- Maven项目中WEB模块中后台代码打成jar包
- javascript判断页面访问类型进行跳转
- htmlcss注册页面的一些小例子
- POJ 3104 Drying (二分答案)
- ReentrantLock实现同步
- C# Quartz作业调度配置
- ssh整合
- CSDN怎样转载别人的文章
- QT---SQL---显示和编辑优化
- ArcGIS API For JavaScript部署
- 朋友圈问题
- GUI与IDLE
- nodejs window下安装与配置淘宝镜像