Tag: 可调用

如何让Callable等到执行?

我有一个Callable,我调用了它 FutureTask task = new FutureTask(new MyCallable(name, type)); pool = Executors.newSingleThreadExecutor(); pool.submit(task); 我想知道在pool.submit(task)之后执行是否继续,或者它将等待callable完成执行? 总之,我只是想知道是否有像Callable的thread.join()这样的方法?

如何在将来取消时在Callable中终止CXF Web服务调用

编辑 这个问题到目前为止已经经历了几次迭代,所以请随意查看修订版本以查看有关历史和所尝试事项的一些背景信息。 我正在使用CompletionService和ExecutorService以及Callable,通过CXF生成的代码同时调用几个不同的Web服务上的许多函数。这些服务都为我用于的一组信息提供不同的信息。我的项目。 但是,服务可能无法长时间响应而不会抛出exception,从而延长了等待组合信息的时间。 为了解决这个问题,我正在同时运行所有服务调用,并且在几分钟之后想要终止任何尚未完成的调用,并且最好记录哪些调用尚未完成,或者通过抛出一个详细的例外。 这里有一些高度简化的代码来说明我已经在做什么: private Callable<List> getXXXFeatures(final WiwsPortType port, final String accessionCode) { return new Callable<List>() { @Override public List call() throws Exception { List features = new ArrayList(); //getXXXFeatures are methods of the WS Proxy //that can take anywhere from second to never to return for (RawFeature raw : port.getXXXFeatures(accessionCode)) { Feature […]

什么是Java可调用?

标题几乎总结了它。 我想知道可调用的概念和想法。 我在这里读到了一个关于可调用和可运行之间差异的问题 。 但没有人显示代码并详细说明可调用的内容。 我不想知道它们之间的区别。 我想知道 , 什么是可赎回的? 何时使用它们以及如何使用它们。 当他们为Android行动时。

unit testing在调试模式下成功,但在正常运行时失败

为什么我的unit testing在调试模式下成功但在正常运行时失败? public class ExecutorServiceTest extends MockitoTestCase{ private int numThreads; private ExecutorService pool; private volatile boolean interruptedBitSet; @Override public void setUp() { numThreads = 5; pool = Executors.newFixedThreadPool(numThreads); } class TaskChecksForInterruptedBit implements Callable { @Override public String call() throws Exception { interruptedBitSet = false; while (!Thread.currentThread().isInterrupted()) { } interruptedBitSet = Thread.currentThread().isInterrupted(); return “blah”; } } […]

invokeAll()不愿意接受Collection <Callable >

我不明白为什么这段代码不能编译 ExecutorService executor = new ScheduledThreadPoolExecutor(threads); class DocFeeder implements Callable {….} … List list = new LinkedList(); list.add(new DocFeeder(1)); … executor.invokeAll(list); 错误消息是: The method invokeAll(Collection<Callable>) in the type ExecutorService is not applicable for the arguments (List) list是DocFeeder的Collection ,它实现了Callable – 发生了什么?!

java调度以伪’固定’速率调用(例如钟形曲线分布)

目前我有一个ScheduledThreadPoolExecutor,它可以以固定的速率执行callable。 scheduledThreadPoolExecutor.scheduleAtFixedRate(callable, delay, waitNano, TimeUnit.NANOSECONDS); 我的团队想在waitNano中添加一些randomess。 目前它是1000.但我们希望等待秒数为900,1100,800,1200。 平均等待时间仍然是1000,但等待秒是随机分布的(例如像Bell曲线)。 我想知道这个function已经在java了吗? 如果我必须编写自己的“调度程序”,这种行为具有随机等待行为,那么你们有什么建议呢? 非常感谢! 厄尔本

Java:参数化的Runnable

标准Runnable接口只有非参数化的run()方法。 还有Callable接口, call()方法返回generics类型的结果。 我需要传递generics参数,如下所示: interface MyRunnable { public abstract void run(E reference); } 是否有任何标准接口用于此目的,或者我必须自己声明基本接口?

java Callable FutureTask Excecuter:如何监听已完成的任务

我对执行者服务很陌生。 喜欢自己做所有事情,但我认为是时候相信这些服务了。 我想通过Executer将Runnable交给我。 执行者将它包装在FutureTask并将其交还给我。 现在我调用poll done()方法。 但是我希望在done()方法返回true时得到通知。 有一个get()方法阻塞直到Runnable完成,但是我需要为每个作业添加一个额外的线程,只是为了看看它什么时候完成。 我可以给我的执行者一些额外的Callable以获得关于任务完成的通知吗? 怎么去这里? 我可以在run方法的末尾添加一些代码,但是done()可能仍然是false …

如何从Callable()返回对象

我正试图从call()返回一个二维数组,我遇到了一些问题。 到目前为止我的代码是: //this is the end of main Thread t1 = new Thread(new ArrayMultiplication(Array1, Array2, length)); t1.start(); } public int[][] call(int[][] answer) { int[][] answer = new int[length][length]; answer = multiplyArray(Array1, Array2, length); //off to another function which returns the answer to here return answer; } 这段代码编译,这不是返回我的数组。 我确定我可能使用了错误的语法,但我找不到任何好的例子。 编辑:改变了一下

如何包装方法,以便在超过指定的超时时可以终止执行?

我有一个方法,我想打电话。 但是,我正在寻找一种干净,简单的方法来杀死它或强迫它返回,如果执行时间太长。 我正在使用Java。 为了显示: logger.info(“sequentially executing all batches…”); for (TestExecutor executor : builder.getExecutors()) { logger.info(“executing batch…”); executor.execute(); } 我认为TestExecutor类应该implement Callable并继续朝这个方向发展。 但我想要做的就是停止executor.execute()如果它花了太长时间。 建议…? 编辑 收到的许多建议都假设正在执行的方法需要很长时间才能包含某种循环,并且可以定期检查变量。 然而,这种情况并非如此。 因此,某些东西不一定是干净的,只会停止执行,这是可以接受的。