问题标签 [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 投票
1 回答
465 浏览

threadpool - 向 ExecutorService 提交 Callable 永远不会完成

我面临的问题已经困扰了一周,这里是:我有一个类 AdminBlocageBackgroundProcessing.java,它通过读取数据并验证它并将其存储在数组列表中来处理 CSV 文件:

}

我从我的动作类中调用它:

现在的问题是 CSV 有太多数据,当我们点击导入它时,进程在后台异步启动,但它永远不会完成,尽管在 jsp 中使用了自动刷新来维护会话。尽管代码对小数据工作正常,但我们如何确保它完成?
但是对于大数据,此功能会崩溃并且无法监控。

我正在使用的线程池由容器提供:

}

0 投票
2 回答
1528 浏览

java - 在 ScheduledThreadPoolExecutor 中重新启动已取消的任务

我正在使用ScheduledThreadPoolExecutor创建任务,并将 Futures 添加到我的 ThreadFactory 类中的列表中,如下所示。

现在,当我想取消所有任务时,我执行以下操作

现在如何在以后重新启动这些任务?

0 投票
1 回答
5412 浏览

java - FutureTask 是如何进行异步计算的

如果我将在 main 中执行此操作,它将创建一个新线程并向其提交一个任务以进行异步计算。

如果您看到 FutureTask文档,它还会显示:

可取消的异步计算。此类提供 Future 的基本实现,包括启动和取消计算、查询计算是否完成以及检索计算结果的方法。

那么它如何FutureTaskasynchronous computation内部创建线程并提交我们在实例化时给它的任务,FutureTask例如:

否则它不能是异步计算,请提供FutureTask 源代码 中的代码片段,它将任务提交给线程,使其成为异步计算。谢谢。


我得到了答案。它基本上是试图在与调用者相同的线程中运行任务。在给定的代码中非常明显:

当您调用futureTask.run()它时,它只是调用sync.innerRun();并且sync是内部类的实例Sync。因为它只是调用call()同一线程中的可调用对象。

0 投票
2 回答
425 浏览

java - 两个线程同时执行 cache.putIfAbsent 会发生什么?

我正在学习Java Concurrency in Practice,但一些代码让我感到困惑:

我就是不明白,既然putIfAbsent只能保证put操作是原子的,而且都返回null,如果两个线程都可以进入run方法呢?

0 投票
2 回答
4619 浏览

java - 如何中断给定 Future 对象的线程?

如果它没有在 5 秒内完成,我想启动一个线程并取消它:

但是,awaitTermination 似乎返回 false。有没有办法让我检查为什么 ExecutorService 不会终止?我可以弄清楚哪些线程仍在运行吗?

0 投票
1 回答
91 浏览

java - 如何在地图存在时从地图中获取数据?

下面是我的启动后台线程的工厂代码TempScheduler-

现在客户将像这样使用上述工厂调用我们的代码。他们只会获取我们的 Client 实例一次,然后使用该实例继续调用read我的实现中的方法 -

下面是我的后台线程代码,它将从 URL 中获取数据,对其进行解析并将其存储在类变量中 -

在解析来自 URL 的数据后,我上面的后台线程将ClientData使用它的 setter 将结果存储在我的类中的变量中。下面是我的ClientData class

问题陈述:-

现在有趣的部分来了,正如您所看到的,客户将使用上述工厂调用我们的代码,一旦他们调用getInstance()方法,我的后台线程就会启动,它将从 URL 获取数据然后解析它并将其存储在类变量中。但是在getInstance()执行该方法后,他们会read method立即在我的客户端代码中进行调用..

然后我应该使用我的后台线程在我的实现代码中设置的变量。我的实现代码具有read方法用途CallableTaksfuture.get因此它会自动出现在下面的call方法中。在下面的类中,我应该使用由后台线程设置的变量值。我需要使用getPrimaryMapping方法来获取下面代码中的值。

这种方法的问题是,一旦客户第一次调用我们的工厂来获取实例,它就会启动后台线程,该线程将从 URL 中获取数据并解析它并将数据存储在类变量中,但是它会立即调用read我的实现类的方法..

现在可能第一次,我的后台线程仍在解析数据,但实际调用已经进入内部call method,然后它会尝试从getPrimaryMapping方法中获取数据,但它不会有任何东西,对吧?为什么 bcoz 它仍在解析数据.. 那么我如何确保当客户第一次调用我们的代码时,一旦解析完成,然后只允许在调用方法中获取变量值。

然后第二次就好了..由于数据会在内存中,只有第一次是问题..

有没有办法做到这一点?

0 投票
1 回答
155 浏览

java - 如何将超时从一个 FutureTask 传播到其 Callable 使用的另一个依赖项?

我处于以下情况(也许我对整个事情进行了过度设计,或者我处于完全的僵局,但无法想到另一种方式):

  • 取一个或多个FutureTask实现异步计算(侦听网络中的多播数据包,收集不同种类的统计信息),我们将其命名为MulticastStatisticsProvider
  • 采取另一个依赖于第一个任务的计算来执行额外的计算(将统计数据与公式结合以公开一些综合信息),这个计算也是异步的,所以在另一个FutureTask我们将调用的定义中FormulaComputing
  • 问题:我们希望它在调用时FormulaComputing.get(timeout, timeUnit)将超时传播到其内部并且找不到实现此目的的方法。CallableMulticastStatisticsProvider.get(timeout, timeUnit)

在此,我到目前为止实现的代码状态:

  • 这是调用者代码。

    /li>
  • 这是FormulaComputing代码:

    /li>

我曾想象过通过自省来改变私人内部sync领域,用我的自定义方法FutureTask手工制作,但内省和反思通常是可以避免的黑客攻击。Callableget

0 投票
2 回答
336 浏览

android - Android:FutureTask 无法转换为 MyClass

情况:一个函数调用一个线程向服务器发送数据。该线程又产生另一个线程,以使用 ObjectInputStream() 从服务器获取结果。

最后,这个对象由生成的线程返回给调用函数。

注意:线程是Callable并且是同步的。

问题:我得到一个异常,“ FutureTask cannot be cast to MyClassName ”。

我在网上没有找到解决方案。有什么建议么 ?

客户代码

onclick() 方法。

0 投票
2 回答
65 浏览

java - 识别 AWT 线程

我有一个类,它从 Swing 中装饰 JTextComponent。它包含的方法可以从任何线程调用,因此我必须确保与 JTextComponent 一起使用的代码将由 AWT 线程执行。

第二个要求是,调用整个方法的线程将“等待”直到 AWT 线程完成任务。

该代码对我来说运行良好,但仍然存在一个问题。如果任何想要使用我的类的人重命名 AWT 线程,那么它就会陷入僵局。

有什么方法可以明确地识别 AWT 线程并避免这个问题?

谢谢

0 投票
2 回答
1641 浏览

java - 将来如何在特定日期在java中运行任务

我将来必须调用一个方法,所以我找到了一些示例链接有 链接 1 链接 2

但我必须只运行一次。在日期和时间:11-03-2014 10:15:20 (dd-MM-yyyy HH:MM:SS)

我怎么办??