我正在开始执行器服务,我想知道当任务完成时如何调用函数。我见过这个函数http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html#isDone--
但我不确定如何将其连接到我的代码中调用函数<code>endoftheroad()
这是我的代码
//import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
//import java.util.concurrent.Future;
//import java.util.concurrent.TimeUnit;
import java.util.*;
public class Pooler {
public static int add(int x, int y){
int c = x + y;
return c;
}
public static int endoftheroad(){
int the_end = 0;
return the_end;
}
public static void main(String args[]) {
ExecutorService service = Executors.newFixedThreadPool(10);
for (int i =0; i<100; i++){
Random randomno = new Random();
int value = randomno.nextInt();
service.submit(new Task(add(value,value)));
}
}
}
final class Task implements Runnable{
private int taskId;
public Task(int id){
this.taskId = id;
}
@Override
public void run() {
System.out.println("Task ID : " + this.taskId +" performed by "
+ Thread.currentThread().getName());
}
}
如果您的代码需要在Java7下运行,请查看Google的guava库中的ListenableFuture
。如果您可以选择使用guava,ListenableFuture
类可以准确地提供您需要的内容。https://code.google.com/p/guava-libraries/wiki/ListenableFutureExplained.有一个教程
如果你有Java 8,那么JDK的ComppletableFuture是另一种选择。
很简单,您当前的任务完成后会向执行程序提交一个新任务:
public void run() {
doSomeStuff();
executor.submit(new FinishHimTask());
}
但是,您应该记住,如果提交的任务是一个非常小的任务,那么在当前线程中执行它可能会更有性能,因为创建一个新任务并将其添加到执行器也需要一些时间。
您的成本有问题
a) 添加
在当前线程中执行。除了在executors线程中执行打印外,什么都不做。
b)道路结束功能不做任何事情,因此是否调用它并不重要。
c)你忽略了未来的回报,使得使用它变得困难。
要回答你的问题,你可以在Java 8中使用CompleableFuture。然而,更简单的解决方案是:
说明 调用方法1: $.f2eAct.task(el,options); 函数说明: 该方法完成主要调用joinAndFinish完成任务,会根据接口返回的奖品类型显示不同文案,如卡玛、实物、谢谢参与等。 当获取的奖品数量大于1时,会默认触发 $(".js-package").click(); 事件,所以需要在JS里定义.js-package点击方法。 使用的时候需要在相应dom元素添加 da
我正在从一个Spring Boot应用程序(在Java11中)同步调用一个REST API来下载一个文件。 这就是REST API的样子: 首先调用“/download”->API返回“文件生成正在进行”状态 所以,5秒后再调用它->API再次返回“文件生成正在进行”状态 因此,在5秒后再次调用它->API再次返回“文件生成正在进行”状态(但此时假定文件已生成) 因此,5秒后再调用一次->API返
问题内容: 我试图实现的基本上是“重复完成渲染”处理程序。我能够检测到何时完成,但是我不知道如何从中触发功能。 检查小提琴:http : //jsfiddle.net/paulocoelho/BsMqq/3/ JS 的HTML 答 :从finishmove的工作提琴:http : //jsfiddle.net/paulocoelho/BsMqq/4/ 问题答案: 请注意,我没有使用,而是将其包装在
问题内容: 我知道这个问题以前曾被问过,但是所有解决方案都不适合我。 我有一个将参数发送到API的函数,并以列表的形式返回数据。我有一个UITableView设置为使用该列表,但是它在列表分配给变量之前运行。 码: 如果不立即将其作为重复投票,我将不胜感激,这是我尝试的方法。 派遣组 信号量计时 运行变量 其中包括= self和= self 。 编辑:要求提取项目, 问题答案: 您不能-也不应该-
首先,我是卡蒙达的新手。。我在camunda中创建了一个自定义任务列表。我可以申请/取消申请任务等,这是可行的。 现在我想完成一项任务,但是当我打电话的时候: 似乎camunda希望在此上下文中进入下一步,而不是部署BPMN模式以及部署执行下一步所需的一切的上下文。所以我得到了“classNotFound”异常,因为我的customTasklist中没有相同的类。战争就像卡蒙达处理器一样。战争 我
本文向大家介绍用map函数来完成Python并行任务的简单示例,包括了用map函数来完成Python并行任务的简单示例的使用技巧和注意事项,需要的朋友参考一下 众所周知,Python的并行处理能力很不理想。我认为如果不考虑线程和GIL的标准参数(它们大多是合法的),其原因不是因为技术不到位,而是我们的使用方法不恰当。大多数关于Python线程和多进程的教材虽然都很出色,但是内容繁琐冗长。它们的确在