草庐IT

future-proof

全部标签

java - 了解 future /线程

我是第一次尝试使用future。您可以取消作业似乎很聪明,但它并没有按预期工作。在下面的示例中,只有第一个作业被取消。其余的都完成了。我是否误解了future的用途?publicclassThreadExample{publicstaticvoidmain(String[]args)throwsInterruptedException,ExecutionException{intprocessors=Runtime.getRuntime().availableProcessors();System.out.println("Processors:"+processors);Execut

java - 为什么 Android 的 AsyncTask 没有实现 Future?

在Java中,我已经习惯了使用Futures.现在我在看安卓,AsyncTask实现几乎所有相同的方法并涵盖相似的生命周期。但是,如果我想保持一致并在我的所有代码中使用Future,我必须将AsyncTask包装在一个愚蠢的包装器中,因为它实际上并没有实现Future。他们只需要添加一个isDone()方法,这看起来很简单,然后添加implementsFuture.(稍后添加:请参阅下面的答案,了解它有多么微不足道)。任何Android专家都知道一些很好的理由/模糊的错误可能导致为什么还没有这样做? 最佳答案 通过阅读AsyncTa

java - Java Futures 的乱序返回

我可以想出的唯一模型来运行多个相似的进程(SIMD)使用JavaFutures(java.util.concurrent.Future)如下:classJobextendsCallable{publicTcall(){//...}}Listjobs=//...List>futures=ExecutorService.invokeAll(jobs);for(Futurefuture:futures){Tt=future.get();//Dosomethingwitht...}此模型的问题在于,如果作业0需要很长时间才能完成,但作业1、2和3已经完成,则for循环将等待从作业0获取返回值。

java - 并发 - 中断 Future 而不取消它

有什么方法可以在不取消Future的情况下中断它吗?javadocAPI:booleancancel(booleanmayInterruptIfRunning)Attemptstocancelexecutionofthistask.Thisattemptwillfailifthetaskhasalreadycompleted,hasalreadybeencancelled,orcouldnotbecancelledforsomeotherreason.Ifsuccessful,andthistaskhasnotstartedwhencanceliscalled,thistaskshou

java - 将 Scala future 转换为 Java future

我有一个包含方法的生成的java接口(interface):publicFuturegetCustomersAsync(AsyncHandlerasyncHandler);我想用Akka实现它。我写了以下内容:overridedefgetCustomerAsync(asyncHandler:AsyncHandler[Customer]):Future[_]={myActorRef.ask(GetCustomer,system.actorOf(Props[Responder]))}问题是ask返回scala.concurrent.Future[Any]并且该方法必须返回java.util

java - Java GUI 开发的 future ?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭12年前。考虑到这一点Sun/Oracle在“发明”了JavaFX之后决定不再开发SwingJavaFX不能正常工作,someconsideritafailurealreadySWT并非真正独立于平台的特性、处理GUI元素的手动任务以及绑定(bind)特定于平台的库的必要性还有别的出路吗?如果我想在JVM上做GUI开发具有良好的API(Swing和SWT不错,但也

java - java.util.concurrent.Future 是线程安全的吗?

我正在尝试查找说明java.util.concurrent.Future是否是/不是线程安全的文档。例如,我能否安全地将同一个Future实例提供给多个线程,这些线程都将调用Future.get(...)?我已经以这种方式使用Future测试了代码,它似乎工作正常,但如果我能找到文件证明future以这种方式进行并发访问是安全的,我会更高兴。谢谢。 最佳答案 鉴于Future旨在供多个线程使用(至少是提交线程和设置结果的线程),并且文档指定异步计算和异步计算之间存在先行关系get调用之后发生的操作,我会假设这些实现是线程安全的(至少

java - Future.cancel(false) 的用例?

在什么情况下需要将false参数的mayInterruptIfRunning传递给Future.cancel()?如果我理解正确,如果你传递false并且任务被取消但线程没有被中断,结果(或ExecutionException)将永远无法访问,因为任务仍然被标记为已取消(即isCancelled()返回true和get()抛出CancellationException。)其他可能的情况是:Runnable或Callable实现不检查中断,即使你打断它也会运行完成(这里的中断没有区别)在您调用cancel()之前任务已经完成(再次中断没有区别)任务在退出之前需要执行一些清理(一个编写良好

java - 具有 future 兼容性且不会破坏 future 修改的类

我正在阅读Android的RecyclerView的源代码,我正在使用SimpleOnItemTouchListener并阅读有关此类的文档。但是我不确定我是否理解这个的意思:Anotherbenefitofusingthisclassisfuturecompatibility.Astheinterfacemaychange,we'llalwaysprovideadefaultimplementationonthisclasssothatyourcodewon'tbreakwhenyouupdatetoanewversionofthesupportlibrary这是因为SimpleOn

java - 0 超时的 future.get 行为

谁能给我指点一些文档,明确说明超时为0的“Future.get”不会等待?java.util.concurrent.Future的API文档没有明确说明future.get(0,unit)的行为。就其本身而言,语句“如果需要,最多等待给定时间...”暗示此调用根本不会等待,但考虑到Object.wait(0)的长期行为>(无限等待),我很紧张依赖于future.get(0,unit)的“无等待”行为扫描一些JDK提供的类(即FutureTask)的源代码,我看到Future的这个特定实现在超时为0时不会等待。我想说longtimeout=Math.max(until-now,0);re