首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

高效率并发缓存

2012-12-24 
高效并发缓存package concurrentimport java.util.concurrent.Callableimport java.util.concurrent.Con

高效并发缓存

package concurrent;import java.util.concurrent.Callable;import java.util.concurrent.ConcurrentHashMap;import java.util.concurrent.ExecutionException;import java.util.concurrent.Future;import java.util.concurrent.FutureTask;/** * 高效并发缓存 * @author user * */public class MemoryCacheTest {private final ConcurrentHashMap<String, Future<String>> cache = new ConcurrentHashMap<String, Future<String>>();public void query(String dataId) throws InterruptedException, ExecutionException{while(true){Future<String> future = cache.get(dataId);if(future == null){System.err.println("not have querying ........");Callable<String> call = new Callable<String>() {@Overridepublic String call() throws Exception {System.err.println("非常耗时的操作!!!!!begin");Thread.sleep(5000);System.err.println("非常耗时的操作!!!!!end");return "大大的數據!";}};FutureTask<String> futureTask = new FutureTask<String>(call);if(null == cache.putIfAbsent(dataId, futureTask)){future = futureTask;futureTask.run();}}Thread.sleep(1000);System.err.println(future.get());}}/** * @param args * @throws ExecutionException  * @throws InterruptedException  */public static void main(String[] args) throws InterruptedException, ExecutionException {MemoryCacheTest test = new MemoryCacheTest();test.query("1");}}

热点排行