问题标签 [threadpoolexecutor]

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 投票
0 回答
1407 浏览

java - 寻找将 Spring 的 ThreadPoolTask​​Executor 与 Jersey 客户端 Web 服务调用一起使用的正确方法

我正在开发一个 Web 应用程序,其中一个要求是调用一个外部 Web 服务,该服务是通过 Jersey 客户端完成的。现在我想在一个单独的线程中调用这个 Web 服务 api,这样 UI 就不会在等待 WS 响应时被阻塞。我还希望能够只记录 Web 服务调用返回的响应,并且不会在任何业务逻辑中使用该响应。为此,我创建了一个 spring 托管 bean,它将包含对 spring 的引用ThreadPoolTaskExecutor。配置如下:

MyClass有一个实现可运行的内部类,用于生成将执行实际 Web 服务调用并记录响应的线程,所有这些都是异步完成的,因此 UI 不会被阻塞。MyClass看起来像这样:

从上面的代码可以看出,尝试是将球衣客户端调用放到 WS 中实现的 run 方法中WorkerClass。然后,Runnable公共方法makeWSCall将在调用时taskExecutor执行一个新WorkerClass对象。我的问题/担忧如下:

  1. 这是解决手头问题的好方法吗?对于使用我们公共领域网站的多个客户来说,它是否会表现良好?
  2. 我没有taskExecutor在 Spring 配置文件中给出任何销毁方法。有必要吗?
  3. 如果 的run()方法WorkerClass抛出异常会发生什么?该线程是否再次从池中可用?
  4. 任何其他问题或更好的想法。

请注意,我尝试使用 Jersey'sAsyncWebResource但我仍然必须从仍会阻止 UI 的帖子中返回的 Future 对象获取响应。此外,我们使用的是非常旧版本的 jersey 客户端 (1.0.2),其中一些较新的功能可能不可用。升级到较新版本目前超出了该项目的范围。

编辑 我在 Spring 中阅读了有关 @Async 注释的信息,我认为这比使用实现可运行的内部类更好。我认为解决方法是将代码传输WorkerClass到中makeWSCall,使用@Async 进行注释makeWSCall,在 spring 配置文件中进行必要的更改。但是,如果在应用程序上下文中定义了另一个执行程序会发生什么。Spring 怎么知道在哪个执行程序中运行我的 @Async 方法?

编辑 我最终使用了 @Async 注释,它工作正常。另一个问题是关闭连接。返回响应后如何确保关闭连接。我可以调用确保连接关闭getEntity的对象(根据球衣文档)。ClientResponse但是,如果在我的网络资源上执行实际的发布请求时或什至出现异常getEntity,连接是否仍会关闭,或者我是否必须明确执行?在我的球衣版本中,没有close(). ClientResponse我应该如何关闭异常连接?

0 投票
2 回答
6393 浏览

java - 在 pool-size=1 的情况下使用 Spring @Async 和 ThreadPoolTask​​Scheduler

我们在基于 Spring 的 Web 应用程序中有一个服务实现,它增加了数据库中的一些统计计数器。因为我们不想弄乱用户的响应时间,所以我们使用 Spring 的 @Async 将它们定义为异步的:

而spring任务配置是这样的:

现在,pool-size="10"当两个线程尝试两个创建包含计数器的相同初始记录时,我们遇到了并发问题。

pool-size="1"在这里设置以避免这些冲突是个好主意吗?这有什么副作用吗?我们有很多地方会触发异步操作来更新统计信息。

0 投票
4 回答
3547 浏览

android - 安卓信号 11 (SIGSEGV)

我在这里和其他网站上阅读了许多帖子,但找不到创建错误的问题:
我使用 AsyncTask 因为我想在执行之前和之后轻松操作 UI 线程。
在 doInBackground 中,我创建了一个 ThreadPoolExecutor 并执行 Runnables。
如果我只使用 Executor 执行 1 个 Runnable,则没有问题,但如果我执行另一个 Runnable,则会出现以下错误:

我这样设置 ThreadPoolExecutor:

我不知道为什么在启动第二个线程时它会失败。
也许内存泄漏?

任何帮助表示赞赏。
提前致谢

0 投票
1 回答
306 浏览

php - 从服务器下载一堆文件

我正在尝试从 PHP 服务器下载一堆文件并将它们存储在 sdcard 上。但是当我下载文件时,我收到以下错误:No of files download from server is **500 -600** after download some files **250 - 260**. 它引发了一个错误。

错误

有人可以帮我解决这个问题吗?我正在使用 asynchtask 进行下载。

我的代码是

包 com.webservice;

0 投票
0 回答
169 浏览

java - 带有执行器的java中的线程调度

地点和内容

我已经实现了一个 Java 程序,它由 3 个任务一一安排:

  1. 第一个任务真的很快(基本流程)
  2. 第二个任务真的很慢(复合和链接过程)
  3. 最后一个任务真的很快(基本流程),必须一次完成(一次不能被多个线程使用)

我有的

该程序每小时处理数千个数据,每个数据将通过 3 个任务。

问题

安排所有这些事情的最佳方式是什么?

我试过的

  1. ThreadPoolExecutor敌人每个任务:第一次运行后,我的GC 开销限制超过了几分钟(但所有任务运行良好)

谢谢您的帮助。

0 投票
1 回答
249 浏览

java - 当一个任务在线程池执行器中返回无效时如何取消任务中的所有线程

我有任意数量的任务提交给 ThreadPoolExecutor。无论任务是否成功,这些任务中的每一个都会返回一个代码。我想要发生的是,返回失败代码的第一个任务将使所有其他任务无效/取消/中断,几乎就像将整个事情短路以节省时间。如果没有任务失败,则所有任务都将运行。假设任务被设计为优雅地处理中断

我试图想出一个好的设计,让我可以检查returnValue是否返回失败的值,以取消剩余任务的工作。

我可以遍历所有期货并做一个get()但这不是我想要的,因为它会阻止该特定任务直到它完成,但是如果另一个任务已经完成但结果失败怎么办?

有哪些方法可以最有效地完成此任务?

编辑:可能重复的问题:在 Java 中,我如何等待所有任务,但在第一个错误时停止?

0 投票
3 回答
4281 浏览

java - 使用 ExecutorService 在 java 中并行处理文件不会占用所有 CPU 资源

我有一个目录,其中包含我需要解析的 1000 个 csv 文件。我已经实现了 Java 的 ExecutorService 类来完成这项工作,其中我为每个线程分配了一个 csv 文件来解析。我的机器上有 4 个内核。与单线程应用程序相比,我确实获得了一些效率。但是,当我看到 CPU 利用率(使用任务管理器)时,它似乎并没有利用所有的 CPU 能力,使用的 CPU 百分比仅为 30%-40% 左右。我只是想知道我的方法是否正确。

我只是想知道我的方法是否正确?任何帮助,将不胜感激。

谢谢

解析器的代码是:

0 投票
1 回答
390 浏览

java - Java 线程池

我正在尝试编写多线程java程序来并行获取mongo数据并存储它。下面是 CallBack 的代码,它使用 70 个线程线程池创建工作线程。我正在使用 Callable 来回调 CallBack。

问题是获取的项目多于返回到回调列表。不知道怎么回事。任何人都可以帮忙吗?即使是“FETCHED....”打印的数字也比“INDEXED ...”要大。线程是否相互交叉?

0 投票
1 回答
1453 浏览

java - ThreadPoolExecutor 异常通知

你能帮我验证这段代码吗?我正在尝试同时执行一些文件下载任务。稍后,如果所有下载都成功,那么我想对它们进行后处理。如果任何任务失败,我应该向调用者抛出异常,因为我不想发布处理半成功的结果。

这是我的自定义 ThreadPoolExecutor,我尝试检查池中任何线程的任何异常

如您所见,如果任何子线程出现异常,我尝试使用 AtmociBoolean 标志并将其设置为 true。

这是我尝试使用此信息的主要课程的片段:

如果这看起来不错,请告诉我,或者错误布尔标志是否会有任何同步问题,或者这甚至是正确的方法。我知道在 executor 服务上使用 invokeall 函数,但仍在争论哪一个将是处理任何异常情况的更清洁的方法。

谢谢你的时间,

0 投票
1 回答
104 浏览

android - 从服务器下载一堆文件时出错

我正在尝试使用来自服务器的一堆文件AsynchTask出现此错误:

它让我想到了这一行:

我不知道有什么问题..我的代码是

已编辑