ExecutorService是一个Java对象,包含托管的线程池,能够为这些线程调度提交的任务。调度策略在多个可用实现中有所不同。
我目前正在使用 Executors.newFixedThreadPool 并行运行大量任务。 尝试(ExecutorService executorService = Executors.newFixedThreadPool(10)){ 列表 我目前正在使用 Executors.newFixedThreadPool 并行运行大量任务。 try(ExecutorService executorService = Executors.newFixedThreadPool(10)) { List<Future<Integer>> resultFutures = executorService.invokeAll(tasks); for (Future<Integer> rf: resultFutures ) { .... } executorService.shutdown(); } 每个任务都会打开一个数据库连接。 我想使用虚拟线程(Executors.newVirtualThreadPerTaskExecutor())。 但是可能会导致大量的DB连接。 我搜索过,但找不到限制虚拟线程数量的方法。 处理这种情况有什么更好的方法吗? 虚拟线程不应该被池化。 因此我们需要直接限制对昂贵资源的使用。 信号量是限制同时访问资源的对象数量的常用方法。 实例化一个信号量,指定有限数量的许可。您的代码通过调用 acquire 获取其中一项许可。使用完该资源后,通过调用 release 返回许可证。请务必使用 try-finally 语法以确保不会丢失许可证。
ExecutorCompletionService?如果我们有 invokeAll 为什么还需要一个?
如果我们使用 ExecutorCompletionService,我们可以将一系列任务作为 Callable 提交,并以队列的形式与 CompletionService 交互来获取结果。 但还有
我有一个将异步任务委托给线程池的进程。 我需要确保某些任务按顺序执行。 例如 任务按顺序到达 任务 a1、b1、c1、d1、e1、a2...
我编写了一个将任务提交给 ExecutorService 的函数。该函数有一个条件,如果为真,函数将调用自身来创建另一个任务。 私有无效taskCreator(int v,ExecutorService
我有一个固定的线程池,可以向其提交任务(限制为 5 个线程)。我如何找出这 5 个线程中的哪一个执行我的任务(例如“5 个线程中的第 3 个线程正在执行此任务”)?
CopyOnWriteArrayList 与 newScheduledThreadPool 的意外工作
创建一个多线程程序来使用 ExecutorService 计算 no 的阶乘。这是代码: 包 org.example.executorsExample; // 如何使用 Callable 和
我试图在Java中并行运行两个函数,但我有一个特定的标准,我不知道它是否得到满足。下面是我的代码。执行者服务下面的代码...
是使用invokeAll还是submit-java Executor服务
我有一个场景,我必须为同一个可调用对象异步执行 5 个线程。据我了解,有两种选择: 1)使用提交(可调用) ExecutorService 执行器服务 =
如何在 verticle 中使用自定义 ThreadPoolExecutor?
我最近开始使用Vert.x。早些时候我使用的是 Play 框架。在游戏中,我使用带有自定义 MessageDispatcherConfigurator 的 Actor 系统来使用自定义 ThreadPoolExecutor,这
新的 Thread 对象是否可能等于 Java 中当前正在运行的线程(在原始线程的上下文中)?
所以我正在研究Executor Service的内部工作,在线程的构造函数中提到了这些行: 线程(ThreadGroup g, String name, int features, Runn...
在 Java 中为我的“Runnable”创建一个“Callable”
我有一些任务定义为 Runnable 对象。我想通过使用 ExecutorService 上的 invokeAll 或 invokeAny 方法来调用这些任务。 问题是这些方法需要 Ca 的集合...
java.util.concurrent.Future.get() 不返回
我有以下Java代码: 最终未来未来 = exeService.submit( 新的可运行(){ 公共无效运行(){ myObject.doSomething(); } } ); future.get(); 哪里
我正在尝试执行以下并发代码,但并发线程永远不会响应。创建 10 个并行线程和控件后,请找到下面的伪代码...
如何等待使用不同`ExecutorServices`创建的`Future`列表
好的,所以我知道这里的第一个答案/评论将是“使用一个 ExecutorService 并使用 invokeAll”。然而,我们保留线程池有一个很好的理由(我不会让人们感到厌烦)
我们使用具有以下机制的异步 servlet(异步 servlet 不异步操作) @WebServlet(urlPatterns = { "/test" }, asyncSupported = true) 公开课
我们在 Java 17 中有一个服务,它在我们端执行逻辑,将请求发送到第三方系统。第三方系统的响应时间约为800-1400ms。 我们有一个 ThreadPoolExecutor ...
Java:杀死由 ExecutorService 作为 Runnable 启动的线程
我有一个系统,当它收到来自网络服务的调用时,它会启动工作程序。 Worker 由 ExecutorService 启动,启动的类实现 Runnable。但是,如果...
请告诉我如何最好地做到这一点:我有很多对象,大约 200 个,每 20 秒从网络更新一次它们的状态(类似于正在刷新的网页)。每个对象都有 sev...
Java:使用 executorService 运行异步任务
我有两个端点/issue和/callback,调用/issue后会立即调用/callback。在问题中,我向执行者服务提交了一项任务,并将未来存储到地图上,键为 or...
我创建了一个异步任务线程,它为长时间运行的作业创建了内部 8 个工作线程。假设我有 8 个长期运行的作业,一切都工作正常。所有 8 个 Worker-Jobs 在例如 10 秒内完成...