码迷,mamicode.com
首页 > 编程语言 > 详细

多线程并发库

时间:2016-09-07 12:29:21      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:

x.ThreadLocal单个线程范围内的共享变量

应用比如,struts的Action对象的共享变量request,session...等等。

巧妙的单例设计ThreadLocal线程共享变量对象ThreadLocalDto

12.读写锁

a.读写锁可以实现读读同步,读写互斥,写写互斥。

应用比如,队列Queue中的一份数据data,多个线程同时读和写。

b.基于多线程的并发缓存系统

技术分享
 1 public class CacheDemo{
 2 private HashMap<String,Object> cache=new HashMap<String,Object>();
 3 private ReadWriteLock rwl=new ReenTrantReadWriteLock();
 4 public Object getData(String key){
 5     rwl.readLock().lock();
 6     Object value=null;
 7     try{
 8      value=cache.get(key);
 9     if(value==null){
10     rwl.readLock().unlock();
11     rwl.writeLock().lock();
12     try{
13     //
14     if(value==null){
15        value=userSql.query(key);
16        cache.put(key,value);  
17      }  
18         }finally{
19          rwl.writeLock().lock();  
20         }
21        rwl.readLock().lock();
22     }
23         }finally{  
24     rwl.readLock().unlock(); 
25         }
26     return value;
27    }
28 }
View Code

 13.condition可以实现多路通信,多路的指定叫醒,比如老大叫醒老二,老二叫醒老三,老三叫醒老大。wait()和notify()和while无法实现两路以上指定叫醒。

a.高级应用,阻塞队列。多(单)个线程put(),多(单)个线程take()(需要两路的指定叫醒,可以用一个condition实现或者wait,notify实现,此处用的是两个condition,可以减少唤醒消耗(需要唤醒的wait池对象相对大大减少))。

多线程并发库

标签:

原文地址:http://www.cnblogs.com/kuiyeit/p/5848592.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!