java ReadWriteLock用法示例
2015-06-30 20:45
405 查看
public class ReadWriteLockTest { public static void main(String[] args) { final Queue3 q3 = new Queue3(); for(int i=0;i<3;i++) { new Thread(){ public void run(){ while(true){ q3.get(); } } }.start(); new Thread(){ public void run(){ while(true){ q3.put(new Random().nextInt(10000)); } } }.start(); } } } class Queue3{ private Object data = null;//共享数据,只能有一个线程能写该数据,但可以有多个线程同时读该数据。 ReadWriteLock rwl = new ReentrantReadWriteLock(); public void get(){ rwl.readLock().lock(); try { System.out.println(Thread.currentThread().getName() + " be ready to read data!"); Thread.sleep((long)(Math.random()*1000)); System.out.println(Thread.currentThread().getName() + "have read data :" + data); } catch (InterruptedException e) { e.printStackTrace(); }finally{ rwl.readLock().unlock(); } } public void put(Object data){ rwl.writeLock().lock(); try { System.out.println(Thread.currentThread().getName() + " be ready to write data!"); Thread.sleep((long)(Math.random()*1000)); this.data = data; System.out.println(Thread.currentThread().getName() + " have write data: " + data); } catch (InterruptedException e) { e.printStackTrace(); }finally{ rwl.writeLock().unlock(); } } }整理自教程
相关文章推荐
- 如何调试JDK源码
- 我们应该怎样理解:Java中的 “.*;” ???
- MyEclipse + Maven开发Web工程的详细配置过程
- 开始玩hadoop4--装hadoop(ubuntu14.04,hadoop-2.6.0,最后还是屈服了java7)
- Java语言学习笔记:0
- java程序并发遇到的问题
- 用spring annotation声明的bean,当打包在jar中时,无法被扫描到
- Struts2学习--配置及原理简述
- java GC 栈(虚拟机栈,本地方法栈),堆(新生代、老年代), 方法区(永久带)等参数配置
- Spring IOC-Servlet加载到bean工厂
- java学习之旅48--面向对象_21_抽象类_抽象方法
- Struts1 多个配置文件的实现
- Java JDBC基本操作
- Java Swing皮肤包的使用方法
- Java集合详解
- java 中缀转后缀(逆波兰)
- Java知多少(108)数据库查询简介
- (1)java设计模式之简单工厂模式
- java内存分配和String类型的深度解析
- Spring Task 定时任务