Java并发编程:ExecutorService异步执行示例
在Java中,ExecutorService
是一个接口,用于管理异步任务的执行。它提供了一种将任务提交给线程池执行的方法,而不需要手动管理线程的生命周期。以下是使用 ExecutorService
异步执行任务的一个简单示例:
```javaimport java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class ExecutorServiceExample {
public static void main(String[] args) {
// 创建一个固定大小的线程池ExecutorService executor = Executors.newFixedThreadPool(3);
// 提交一个任务给线程池执行 executor.submit(() -> {
System.out.println(“任务1开始执行”);
try {
Thread.sleep(1000); //模拟任务执行时间} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(“任务1执行结束”);
});
// 提交另一个任务给线程池执行 executor.submit(() -> {
System.out.println(“任务2开始执行”);
try {
Thread.sleep(2000); //模拟任务执行时间} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(“任务2执行结束”);
});
// 提交第三个任务给线程池执行 executor.submit(() -> {
System.out.println(“任务3开始执行”);
try {
Thread.sleep(3000); //模拟任务执行时间} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(“任务3执行结束”);
});
// 关闭ExecutorService,不再接受新任务,已提交的任务继续执行 executor.shutdown();
try {
//等待所有任务执行完成 executor.awaitTermination(1, TimeUnit.MINUTES);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(“所有任务执行完毕”);
}
}``在这个示例中,我们创建了一个固定大小为3的线程池,然后提交了三个任务给线程池执行。每个任务都是一个简单的
Runnable实现,它打印出任务开始和结束的消息,并在中间模拟执行时间。最后,我们关闭了
ExecutorService`并等待所有任务执行完成。
请注意,ExecutorService
提供了多种方法来提交任务,例如 submit()
、execute()
和 invokeAll()
等。submit()
方法返回一个 Future
对象,可以用来查询任务执行状态或获取任务结果。而 execute()
方法不接受返回值,也不提供查询任务状态的方法。
还没有评论,来说两句吧...