这篇文章主要讲解了“JAVA多线程用JDK1.5提供的读写锁实现高并发本地缓存工具类”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JAVA多线程用JDK1.5提供的读写锁实现高并发本地缓存工具类”吧!
我们提供的服务有:网站设计、做网站、微信公众号开发、网站优化、网站认证、天峨ssl等。为成百上千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的天峨网站制作公司
package com.study; import java.util.LinkedHashMap; import java.util.Map; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; public class ReadWriteLockDemo { private static MapcacheMap = new LinkedHashMap (); public static void main(String[] args) { ReadWriteLockDemo readWriteLockDemo = new ReadWriteLockDemo(); final CacheUtils cacheUtils = readWriteLockDemo.new CacheUtils(); Thread thread = new Thread(new Runnable() { @Override public void run() { for(Integer index = 0;index <= 100;index ++){ System.out.println(cacheUtils.putCache(index.toString())); } } }); thread.start(); Thread thread2 = new Thread(new Runnable() { @Override public void run() { for(Integer index = 0;index <= 100;index ++){ System.out.println(cacheUtils.putCache(index.toString())); } } }); thread2.start(); } class CacheUtils { // 定义一把读写锁 ReadWriteLock readWriteLock = new ReentrantReadWriteLock(); public Object putCache(String key){ //进来时,先用读锁进行上锁 readWriteLock.readLock().lock(); Object value = null; try { value = cacheMap.get(key); if(value == null){ readWriteLock.readLock().unlock(); try { readWriteLock.writeLock().lock(); if(value == null){ //此处实际上是查询DB value = "huangkejie" + key; cacheMap.put(key, value); } } catch (Exception e) { e.printStackTrace(); }finally{ readWriteLock.writeLock().unlock(); } readWriteLock.readLock().lock(); } } catch (Exception error) { error.printStackTrace(); } finally{ readWriteLock.readLock().unlock(); } return value; } } }
感谢各位的阅读,以上就是“JAVA多线程用JDK1.5提供的读写锁实现高并发本地缓存工具类”的内容了,经过本文的学习后,相信大家对JAVA多线程用JDK1.5提供的读写锁实现高并发本地缓存工具类这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!