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) {
}
}