问题标签 [futuretask]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
215 浏览

java - 使用阻塞 API 时的 Java 异步编程

我正在开发一个使用某些阻塞 API 的 Java 项目。

我想使用异步编程和回调,这样我就不必在等待结果时阻塞。我已经研究过使用 Java Future,但我认为我可以使用它的唯一方法是调用get()会阻塞的方法。我也愿意使用其他方式进行异步编程。

我当前的代码如下所示。

如果我要使用Future,我会这样做。但我的理解get()是阻塞。

我怎样才能实现这一点,以便函数get()基本上由回调处理,当结果可用时自动调用该回调?

0 投票
2 回答
297 浏览

java - 当未来的一项任务有预期结果时继续

我有 3 个FutureTask<T>对象。我希望它们被异步处理。但是,一旦 FutureTasks 的get()方法之一没有返回null,我想继续,即我的方法(包装器)返回并且不等到其他两个 FutureTasks 被处理。我想到了类似的东西:

我不确定如何以适当的方式捕获异常(由 get() 抛出),因为我假设它们会被抛出,因为我只是返回而不等待其他两个任务完成。此外,我怀疑代码是否会按预期工作。我觉得我接近解决方案但缺少一些东西。

0 投票
2 回答
1415 浏览

java - 遍历列表对象抛出 IndexOutOfBounds 异常

我有一个 ExecutorService 用于调用 Callable 对象的集合并返回与集合中的 Callable 元素相对应的 Future 对象列表。

但是,在遍历列表的某个地方,它会引发以下异常:

我一直在执行的代码是

它给了我future.get()在线错误。

请帮助解决障碍或让我知道我还能提供什么。

0 投票
1 回答
573 浏览

android-asynctask - Android 调用 AsyncTask().get() 而不执行 ()?

我在试图了解AsyncTask().get()实际工作方式时遇到问题。我知道这是一次执行,synchronous但是:我不知道如何连接。我有来自 Google 文档的示例代码:execute()get()

现在,button.onClick()我以 3 种方式称之为:

我很困惑到底是如何execute()触发的,然后如果被调用doInBackground()则立即返回,而对任何东西都没有影响。get()get()doInBackground()

0 投票
1 回答
296 浏览

android - 如何在单击按钮时取消 ExecutorService 的任务?

我有一个用户可以点击下载的项目列表。我有这个代码:

当用户通过调用 tasks.get(key).cancel(true); 点击取消时,我试图取消相应的下载;

但我的任务并没有被取消。

几个问题:

  1. 通过维护适配器类中的未来对象列表,我做错了什么吗?

  2. 当用户单击按钮时,我应该如何取消任务?

  3. 另外我怎么知道任务已被取消?

我已经阅读了有关 ExecutorService 的信息,但我对实现有点困惑。

0 投票
2 回答
1082 浏览

java - 使用 iText 将 TIFF 转换为 PDF 的多线程方法

我实际上是在尝试使用 itext 将 tiff 文件转换为 pdf,这相当简单。但据我TiffImage.getTiffImage所知,执行较大的文件需要花费大量时间。

我的要求是使用FutureTaskExecutorService提供多线程解决方案。这是我当前的代码:

并且转换方法是

但我得到了一个NullPointerExceptionat future.get()。问题是执行没有等待 TiffImage.getTiffImage(tiffFile, pageNo) 完成。因此我无法创建图像列表。任何帮助将不胜感激。

堆栈跟踪

0 投票
1 回答
101 浏览

java - 为什么我们可以分配 FutureTask反对未来多变的?

以下是Java Concurrency in Practice一书中让我感到困惑的片段:

如代码所示,f的类型是 Future 而ft的类型是 FutureTask。为什么我们可以将ft分配给变量f

0 投票
1 回答
419 浏览

java - java 多线程 - 限制提交到 ExecutorService

我有一个包含数千行的数据文件。我正在阅读它们并将它们保存在数据库中。我想以 50 行的批次对这个过程进行多线程处理。正如我在文件中所读到的,有 10 行被提交给 ExecutorService。

我可以在一段时间循环中执行以下操作,直到我的行结束......

但是,如果处理 10 行需要时间,我不想将整个文件读入内存。我只想提交 5 个,直到其中一个线程返回,然后我提交下一个。

假设一个线程需要 20 秒来保存 10 条记录,我不希望它ExecutorService被喂上千行,因为读取过程正在继续读取并提交给 ExecutorService

实现这一目标的最佳方法是什么?

0 投票
2 回答
1526 浏览

java - 为什么 ThreadPoolExecutor 的 afterExecute() 异常为空?

我想处理ThreadPoolExecutor#afterExecute()方法中工作线程抛出的异常。目前我有这个代码:

如果我运行代码,我会得到输出:

为什么参数Throwable t nullafterExecute()?不应该是SQLException实例吗?

0 投票
0 回答
852 浏览

java - 如何在 Java Spring 中使未来的任务线程原子(事务)

我正在尝试使每个线程都具有原子性。我已经尝试在执行方法之后使用代理注释来开始和结束事务,但它不起作用,而且我尝试在类级别和方法级别使用事务注释都不起作用。那么如何使线程原子化。

测试班/司机班

我的可调用实现

任务执行器代码

}

错误消息失败,因为不是活动事务。