CompletableFuture与虚拟线程:高并发场景下的性能对比实验
📌 并发编程的三代模型
new Thread(() -> System.out.println("Hello")).start();
ExecutorService pool = Executors.newFixedThreadPool(8);
Future<String> future = pool.submit(() -> "result");
CompletableFuture.supplyAsync(() -> "data", virtualThreadPool);
实验环境设计
压测场景配置
class SecKillSimulator {
private AtomicInteger stock = new AtomicInteger(1000);
void tryPurchase() {
if (stock.decrementAndGet() >= 0) {
log.info("抢购成功");
}
}
}
测试矩阵
并发模型 |
线程数 |
任务类型 |
测试参数 |
CompletableFuture |
2000 |
IO密集型 |
-Djdk.virtualThreadScheduler.parallelism=4 |
Virtual Thread |
10000 |
混合型 |
-Djdk.virtualThreadScheduler.maxPoolSize=1000 |
Fixed ThreadPool |
200 |
CPU密集型 |
Executors.newFixedThreadPool(16) |
性能对比指标
吞吐量对比(QPS)