成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java數據緩存實現的核心機制

開發 后端
在大數據量訪問讀取中,數據緩存是最普遍采用的解決方案之一,但在讀過很多代碼的緩存實現,代碼可圈可點的彈性都很大,在一并發數不多時,功能是完全沒有問題的,但是對大數量的多并發操作上就有些差強人意了。以下為集數家之長實現的數據緩存核心機制代碼片段,以拋磚引玉,供大家學習,此片段的核心代碼參考sun的源碼實現。

在大數據量訪問讀取中,數據緩存是最普遍采用的解決方案之一,但在讀過很多代碼的緩存實現,代碼可圈可點的彈性都很大,在一并發數不多時,功能是完全沒有問題的,但是對大數量的多并發操作上就有些差強人意了。以下為集數家之長實現的數據緩存核心機制代碼片段,以拋磚引玉,供大家學習,此片段的核心代碼參考sun的源碼實現。

sun沒有對此段代碼開放,它的功能在ArrayBlockingQueue(jdk1.5)中已經實現并提供開放接口。沒有時間看下面的代碼的可直接查看ArrayBlockingQueue的api,如果對象ArrayBlockingQueue也沒有興趣的同學,可以直接調用ConcurrentHashMap(jdk1.5), ConcurrentSkipListMap(jdk1.6),這些類,api中有更加祥細的說明,這里不多說,需要注意的是因為此功能解決多線程并發問題,故null不能做為key和value的鍵值,可以理解為HashTable的提升。

  1. package com.henry;  
  2.  
  3. import java.util.HashMap;  
  4. import java.util.Map;  
  5. import java.util.Random;  
  6. import java.util.concurrent.locks.ReadWriteLock;  
  7. import java.util.concurrent.locks.ReentrantReadWriteLock;  
  8.  
  9. public class CacheDataTest {  
  10. static Map<Integer,Object> dataMap=new HashMap<Integer,Object>();  
  11. static ReadWriteLock lock=new ReentrantReadWriteLock();//創建讀寫鎖的實例  
  12. static Object getData(Integer key){  
  13. lock.readLock().lock();//讀取前先上鎖  
  14. Object val=null;  
  15. try{  
  16. val=dataMap.get(key);  
  17. if(val == null){  
  18. // Must release read lock before acquiring write lock  
  19. lock.readLock().unlock();  
  20. lock.writeLock().lock();  
  21. tryif(val==null){  
  22. //dataMap.put(key, "");//query from db  
  23. val=queryDataFromDB(key); }finally{  
  24. //Downgrade by acquiring read lock before releasing write lock  
  25. lock.readLock().lock();  
  26. // Unlock write, still hold read  
  27. lock.writeLock().unlock(); }  
  28. }finally{  
  29. lock.readLock().unlock();//最后一定不要忘記釋放鎖 System.out.println("get data key="+key+">val="+val);  
  30. return val;   
  31. static Object queryDataFromDB(Integer key){  
  32. Object val=new Random().nextInt(1000);  
  33. dataMap.put(key, val);  
  34. System.out.println("write into data key="+key+">val="+val);  
  35. return val;  
  36. }  
  37.  
  38.  
  39. public static void main(String[] args) {  
  40. for(int i=0;i<10;i++){  
  41. new Thread(new Runnable(){public void run() {  
  42. getData(new Random().nextInt(5));  
  43. }}).start(); }  

原文鏈接:http://www.cnblogs.com/cx361/archive/2011/12/14/2287025.html

【編輯推薦】

  1. Java的標準數據流
  2. 影響Java NIO框架性能的因數
  3. Java的NIO以及線程并發
  4. 微軟警告稱Java乃入侵目標之首
  5. JavaScript 6看上去很美
責任編輯:林師授 來源: 十分愛的博客
相關推薦

2012-07-03 10:57:54

Hadoop核心機制

2025-04-07 11:10:00

Python列表開發

2013-08-02 14:19:50

Java日志緩存

2025-04-27 02:33:00

epoll核心機制服務器

2024-07-30 12:24:23

2010-09-14 09:30:04

Java多態

2024-02-21 12:14:00

Gochannel?panic?

2014-11-04 10:34:27

JavaCache

2025-06-05 02:22:00

2011-07-13 09:12:36

2013-07-08 09:59:47

思科核心機箱思科交換機思科

2025-06-26 08:56:00

AI模型系統

2024-09-02 09:00:59

2025-02-05 12:22:21

2011-07-15 09:57:03

MongoDB緩存刷新

2009-08-03 18:35:51

ASP.NET數據緩存

2021-05-14 11:26:47

大數據

2025-05-07 01:20:11

SpringMVC核心機制

2024-04-01 08:29:09

Git核心實例

2017-07-04 09:53:49

機房運維機房電源
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国内精品久久久久 | 欧美日韩一区二区在线 | 天堂久久久久久久 | 成人免费大片黄在线播放 | 又黑又粗又长的欧美一区 | 一级毛片视频 | 午夜三区 | 久久亚洲一区 | 久久人 | 国产精品一区二区不卡 | 亚洲欧美日韩国产综合 | 午夜免费精品视频 | 天天操欧美 | 日韩三级免费网站 | 91深夜福利视频 | 天天干夜夜| 久久久精品天堂 | 国产1区 | 久久不卡 | 免费观看一级视频 | 中文字幕在线一区二区三区 | 亚洲日韩视频 | 日韩精品在线一区 | 一级电影免费看 | 久久国产精品99久久久久久丝袜 | 久久久精品视频免费看 | 欧美精品导航 | 日本一区二区高清不卡 | 亚洲毛片 | 欧美日韩成人在线 | 日本在线看片 | 精品91视频| 日本精品视频 | 国产精品日韩欧美一区二区三区 | 欧美日韩一区二区在线观看 | 午夜影视网| 国产精品久久久久免费 | 日韩中文一区二区三区 | 欧美理论片在线观看 | 欧美看片 | 久久精品成人热国产成 |