首页 > 代码库 > 多线程并发库
多线程并发库
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=http://www.mamicode.com/null; 7 try{ 8 value=http://www.mamicode.com/cache.get(key); 9 if(value=http://www.mamicode.com/=null){10 rwl.readLock().unlock();11 rwl.writeLock().lock();12 try{13 //14 if(value=http://www.mamicode.com/=null){15 value=http://www.mamicode.com/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 }
13.condition可以实现多路通信,多路的指定叫醒,比如老大叫醒老二,老二叫醒老三,老三叫醒老大。wait()和notify()和while无法实现两路以上指定叫醒。
a.高级应用,阻塞队列。多(单)个线程put(),多(单)个线程take()(需要两路的指定叫醒,可以用一个condition实现或者wait,notify实现,此处用的是两个condition,可以减少唤醒消耗(需要唤醒的wait池对象相对大大减少))。
多线程并发库
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。