ExecutorService是Java中用于执行异步任务的重要接口。我们可以使用Executors工具类来创建不同类型的线程池,然后通过这些线程池来执行任务。下面是一个ExecutorService执行任务的简单示例:
```java
import
java.util.concurrent.Callable;
import
java.util.concurrent.ExecutorService;
import
java.util.concurrent.Executors;
import
java.util.concurrent.Future;
public
class
ExecutorServiceExample
{
public
static
void
main(String[]
args)
throws
Exception
{
//
创建一个固定大小为5的线程池
ExecutorService
executorService
=
Executors.newFixedThreadPool(5);
//
提交一个Runnable任务
Runnable
task1
=
()
>
System.out.println("Task
1
is
running");
executorService.submit(task1);
//
提交一个Callable任务,并获取Future对象
Callable
task2
=
()
>
"Task
2
result";
Future
future
=
executorService.submit(task2);
//
可以做一些其他的事情,同时线程池在后台运行任务
//
关闭线程池,阻止新任务提交,并等待所有已提交任务执行完毕
executorService.shutdown();
while
(!executorService.isTerminated())
{
Thread.sleep(1000);
}
//
打印任务结果
System.out.println("Task
1
has
completed");
//
获取Callable任务的结果
System.out.println("Task
2
result:
"
+
future.get());
}
}
```
在这个例子中,我们首先创建了一个固定大小的线程池,然后提交了一个Runnable任务和一个Callable任务。Runnable任务没有返回值,而Callable任务则返回一个字符串。我们通过Future对象来获取Callable任务的执行结果。最后,我们关闭了线程池,并等待所有任务执行完毕。
注意,这个示例代码仅用于演示目的。在实际应用中,你需要根据具体需求来选择合适的线程池类型,并且可能需要处理异常情况,例如Callable任务抛出的异常或者Future.get()方法抛出的InterruptedException和ExecutionException。