import java.util.concurrent.CompletableFuture;
public class AsyncProcessor {
public static void main(String[] args) {
System.out.println("Start processing...");
long timestamp = System.currentTimeMillis();
// 同步处理任务
processTask();
// 执行其他操作
try {
System.out.println("其他任务开始");
Thread.sleep(2000);
System.out.println("其他任务结束");
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Processing completed.");
System.out.println("无损耗同步情况下应该为4000ms,同步实际耗时为:"+(System.currentTimeMillis()-timestamp)+"ms");
System.out.println("\n\n\n***********分隔符************\n\n\n");
System.out.println("Start processing...");
long timestamp1 = System.currentTimeMillis();
// 异步处理任务
CompletableFuture future1 = CompletableFuture.runAsync(() -> processTask());
// 执行其他操作
try {
System.out.println("其他任务开始");
Thread.sleep(2000);
System.out.println("其他任务结束");
} catch (InterruptedException e) {
e.printStackTrace();
}
future1.join(); // 等待异步任务完成
System.out.println("Processing completed.");
System.out.println("无损耗同步执行情况下应该为4000ms,使用异步实际耗时为:"+(System.currentTimeMillis()-timestamp1)+"ms");
}
private static void processTask() {
// 模拟耗时操作
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Task processed.");
}
}
代码对同步处理和异步处理进行了比较方便读者发现二者之间的区别
控制台打印结果如下:
Start processing...
Task processed.
其他任务开始
其他任务结束
Processing completed.
无损耗同步情况下应该为4000ms,同步实际耗时为:4017ms
***********分隔符************
Start processing...
其他任务开始
其他任务结束
Task processed.
Processing completed.
无损耗同步执行情况下应该为4000ms,使用异步实际耗时为:2080ms