4.2.1ReentrancReadWriteLock读写锁的使用
来源:互联网 发布:java工程师所属部门 编辑:程序博客网 时间:2024/06/11 16:05
ReentrantLock:完全互斥,同一时间只有一个线程在执行lock后面的程序,虽然保证了实例变量的安全,但是效果低下。
ReentrancReadWriteLock:提供读锁、写锁。读锁是共享锁,写锁是排他锁。多个读锁不互斥,读锁写锁互斥,写锁写锁互斥。可以提高程序的运行效率
一、读锁之间共享,不互斥
package demo;import java.util.concurrent.locks.ReentrantLock;import java.util.concurrent.locks.ReentrantReadWriteLock;/** * Created by sunyifeng on 17/10/19. */public class MyService { private ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); public void read() { try { try { lock.readLock().lock(); System.out.println("获得读锁:" + Thread.currentThread().getName() + "当前时间:" + System.currentTimeMillis()); Thread.sleep(10000); } finally { lock.readLock().unlock(); } } catch (InterruptedException e) { e.printStackTrace(); } }}
package demo;/** * Created by sunyifeng on 17/10/19. */public class ThreadA extends Thread { private MyService myService; public ThreadA(MyService myService) { super(); this.myService = myService; } @Override public void run() { super.run(); myService.read(); }}
package demo;/** * Created by sunyifeng on 17/10/19. */public class ThreadB extends Thread { private MyService myService; public ThreadB(MyService myService) { super(); this.myService = myService; } @Override public void run() { super.run(); myService.read(); }}
package demo;/** * Created by sunyifeng on 17/10/19. */public class Run { public static void main(String[] args) { MyService myService = new MyService(); ThreadA threadA = new ThreadA(myService); threadA.setName("A"); ThreadB threadB = new ThreadB(myService); threadB.setName("B"); threadA.start(); threadB.start(); }}
运行结果:获得读锁:A当前时间:1508403425495
获得读锁:B当前时间:1508403425495
程序分析:
两个线程几乎同时进入lock()后面的代码(打印毫秒一样的),说明可以提高程序运行的效率。
阅读全文
0 0
- 4.2.1ReentrancReadWriteLock读写锁的使用
- 读写锁的使用
- ReentrantReadWriteLock读写锁的使用1
- 读写锁pthread_rwlock_t的使用
- ReentrantReadWriteLock读写锁的使用
- ReentrantReadWriteLock读写锁的使用
- ReentrantReadWriteLock读写锁的使用
- 读写锁pthread_rwlock_t的使用
- Java读写锁的使用
- ReentrantReadWriteLock读写锁的使用
- ReentrantReadWriteLock读写锁的使用
- ReentrantReadWriteLock读写锁的使用
- ReentrantReadWriteLock读写锁的使用
- ReentrantReadWriteLock读写锁的使用
- 读写锁pthread_rwlock_t的使用
- ReentrantReadWriteLock读写锁的使用
- ReentrantReadWriteLock读写锁的使用
- ReentrantReadWriteLock读写锁的使用
- 【python学习笔记】python基础之数据类型
- 关键词:革奴计划,反版权
- Glide源码之旅
- 数据结构实战java实现hash表
- 我的网址收藏
- 4.2.1ReentrancReadWriteLock读写锁的使用
- VISP------深度应用------技术宅深度体验:桌面型机械臂到底能不能干正事?
- unbuntu ftp 安装 filezilla
- [NOIP2017模拟]打牌
- 欢迎使用CSDN-markdown编辑器
- hibernate的入门的一个简单案例
- 键盘快捷键
- Java学习心得之数组
- 数据结构与C语言实现(五)——树(下):哈夫曼树与哈夫曼编码