import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; ExecutorService executor = Executors.newFixedThreadPool(10); for (Task task : tasks) { executor.submit(() -> { task.doTask(); }); } executor.shutdown(); ExecutorService executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()); private void adjustThreadPoolSize() { int currentLoad = getCurrentLoad(); int maxThreadNum = Runtime.getRuntime().availableProcessors() * 2; int threadPoolSize = executor.getPoolSize(); if (currentLoad > 0.8 && threadPoolSize < maxThreadNum) { executor.setCorePoolSize(threadPoolSize + 1); } else if (currentLoad < 0.5 && threadPoolSize > 1) { executor.setCorePoolSize(threadPoolSize - 1); } } import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; Cache<String, Result> cache = CacheBuilder.newBuilder() .maximumSize(1000) .build(); Result getResult(String key) { Result result = cache.getIfPresent(key); if (result == null) { result = calculateResult(key); cache.put(key, result); } return result; } ShardingStrategy shardingStrategy = new ShardingStrategy(); for (Data data : dataSet) { int nodeId = shardingStrategy.getNodeId(data.getKey()); Node node = getNode(nodeId); node.processData(data); } class Node { void processData(Data data) { } }


上一篇:
下一篇:
切换中文