您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
Java Executor执行器(ExecutorService)提供了多种任务提交方式,主要包括以下几种:
execute(Runnable command)
Runnable
对象,表示要执行的任务。executorService.execute(new Runnable() {
@Override
public void run() {
System.out.println("Task is running");
}
});
submit(Runnable task)
Future
对象,可以通过该对象检查任务是否完成。Runnable
对象。Future<Void>
对象。Future<Void> future = executorService.submit(new Runnable() {
@Override
public void run() {
System.out.println("Task is running");
}
});
// 可以通过future.isDone()检查任务是否完成
submit(Callable<T> task)
Future<T>
对象,可以通过该对象获取任务的执行结果。Callable<T>
对象,表示要执行的任务,可以返回一个结果。Future<T>
对象。Future<Integer> future = executorService.submit(new Callable<Integer>() {
@Override
public Integer call() throws Exception {
System.out.println("Task is running");
return 42;
}
});
// 可以通过future.get()获取任务的执行结果
Integer result = future.get();
submit(Runnable task, T result)
Runnable
对象和任务完成后的结果。Future<T>
对象。Future<String> future = executorService.submit(new Runnable() {
@Override
public void run() {
System.out.println("Task is running");
}
}, "Task completed");
// 可以通过future.get()获取任务的结果
String result = future.get();
invokeAll(Collection<? extends Callable<T>> tasks)
Callable
任务,并返回一个Future
列表,每个Future
对应一个任务的执行结果。Collection<? extends Callable<T>>
对象,表示要执行的任务集合。List<Future<T>>
对象,包含所有任务的执行结果。List<Callable<Integer>> tasks = Arrays.asList(
new Callable<Integer>() {
@Override
public Integer call() throws Exception {
return 42;
}
},
new Callable<Integer>() {
@Override
public Integer call() throws Exception {
return 24;
}
}
);
List<Future<Integer>> futures = executorService.invokeAll(tasks);
for (Future<Integer> future : futures) {
System.out.println(future.get());
}
invokeAny(Collection<? extends Callable<T>> tasks)
Callable
任务,并返回第一个成功完成的任务的结果。Collection<? extends Callable<T>>
对象,表示要执行的任务集合。List<Callable<Integer>> tasks = Arrays.asList(
new Callable<Integer>() {
@Override
public Integer call() throws Exception {
Thread.sleep(1000);
return 42;
}
},
new Callable<Integer>() {
@Override
public Integer call() throws Exception {
Thread.sleep(500);
return 24;
}
}
);
try {
Integer result = executorService.invokeAny(tasks);
System.out.println(result);
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
这些方法提供了灵活的方式来提交不同类型的任务,并根据需要获取任务的执行结果或状态。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。