ExecutorService执行任务示例

tamoadmin 赛事报道 2024-04-27 13 0

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:

ExecutorService执行任务示例

"

+

future.get());

}

}

```

在这个例子中,我们首先创建了一个固定大小的线程池,然后提交了一个Runnable任务和一个Callable任务。Runnable任务没有返回值,而Callable任务则返回一个字符串。我们通过Future对象来获取Callable任务的执行结果。最后,我们关闭了线程池,并等待所有任务执行完毕。

注意,这个示例代码仅用于演示目的。在实际应用中,你需要根据具体需求来选择合适的线程池类型,并且可能需要处理异常情况,例如Callable任务抛出的异常或者Future.get()方法抛出的InterruptedException和ExecutionException。