草庐IT

Executorservice

全部标签

java - ExecutorService的execute和thread.run在Java中并发运行线程有什么区别?

我是Java中这种并发编程的新手,并提出了以下场景,我对何时使用哪个感到困惑。场景1:在下面的代码中,我试图通过调用GPSService类上的.start()来运行线程,这是一个Runnable实现。intclientNumber=0;ServerSocketlistener=newServerSocket(port);while(true){newGPSService(listener.accept(),clientNumber++,serverUrl).start();}场景2:在下面的代码中,我尝试使用ExecutorService类来运行线程,如图所示intclientNumb

java - ExecutorService 似乎在 UI 上运行线程?

我正在尝试使用ExecutorService运行一些代码以将我的客户端连接到服务器。显然,我试图让它在UI线程的单独线程上运行,但是当代码执行时我的UI卡住了。这不是我所期望的。我以为ExecutorService会在单独的线程上运行?下面是我的代码@OverridepublicvoidregisterDevice(){ExecutorServiceexservice=Executors.newFixedThreadPool(10);Futurefuture=exservice.submit(newCallable(){@OverridepublicBooleancall()throw

java - 创建多个线程池(ExecutorService)可以吗?

我在代码中创建了多个ExecutorService实例,通常每个UI页面都有一个ExecutorService实例。每个ExecutorService实例都会执行一些httpget请求线程。privateExecutorServicem_threadPool=Executors.newCachedThreadPool();这样做可以吗?我遇到的问题是,有时httpget请求从HttpURLConnectiongetResponseCode()调用中得到响应代码-1。不知道是不是线程池实例多导致的。谢谢。 最佳答案 ExecutorS

java - 无法中断 ExecutorService 的任务

编辑:为了在Android环境之外测试这个问题,我创建了一个Java应用程序,它创建了一个ExecutorService,提供任务AttackScript(相同的类)然后终止。这按预期100%工作,线程被中断,任务停止。您甚至不必通过Future.cancel(true)取消任务.ExecutorService.shutdownNow()完成工作。Android的Service里面有什么东西吗?以某种方式扰乱了线程池?按预期工作的代码:publicstaticvoidmain(String[]args){AttackScriptscript=newAttackScript("http:

android - 何时在 Android 应用程序中关闭 executorservice

假设我计划在我的整个应用程序中使用一个executorservice,我将向其发送新的runnable或callable以执行/提交,并且我promise在执行此操作后立即关闭。我只想将我的“任务”交给executorservice,让他处理它们并执行它们并提供资源(他有多少线程可用,如果需要他可以创建多少线程,然后相应地对这些任务进行排队)。根据您在Android应用程序中使用ExecutorService的经验,并考虑到应用程序状态的变化,如果我不想通过这样做不断关闭并重新创建executorservice:executor=Executors.newCachedThreadPoo

java - 使用 ExecutorService 时出现 CancellationException

我想等待两个任务完成然后返回它们的结果,但有时我会收到此错误。为什么?CancellationException是从哪里来的?publicclassShouldVoteTaskextendsAbstractWorkerTask{privatefinalintplaceID;privatefinalintuserID;publicShouldVoteTask(finalintplaceID,finalintuserID){this.placeID=placeID;this.userID=userID;}@OverrideprotectedBooleandoInBackground(fin

android - 如何将 ExecutorService 与 Android AsyncTask 一起使用?

我需要执行一些AsyncTasks然后收集他们所有的结果,合并,然后将最终结果返回给我的用户。我正在寻找一种方法来管理多个AsyncTask在Android中。我正在考虑使用ExecutorService来自Java并发包,但我卡住了,因为ExecutorService仅接受Runnables或Callables。为了确定我的要求,我可以使用ExecutorService.invokeAll((Collection>tasks)invokeAll()方法将返回List>的列表只有当所有提交的任务都完成时,我才能从相应的Future中获取每个任务的结果。.ExecutorService一

java - 在 ExecutorService 上调用 shutdown() 的原因

在过去的几个小时里,我读了很多关于它的文章,但我根本看不出有任何理由(valid理由)调用shutdown()ExecutorService,除非我们有一个庞大的应用程序来存储几十个很长时间不使用的不同的执行器服务。唯一的事情(据我所知)关闭所做的就是做一个普通线程在完成后所做的事情。当普通的Thread完成Runnable(或Callable)的run方法后,会被传递给GarbageCollection进行收集。使用ExecutorService,线程将被搁置,不会为垃圾收集打勾。为此,需要关机。好的,回到我的问题。是否有任何理由经常在ExecutorService上调用关闭,甚至在

java - 在 ExecutorService 上调用 shutdown() 的原因

在过去的几个小时里,我读了很多关于它的文章,但我根本看不出有任何理由(valid理由)调用shutdown()ExecutorService,除非我们有一个庞大的应用程序来存储几十个很长时间不使用的不同的执行器服务。唯一的事情(据我所知)关闭所做的就是做一个普通线程在完成后所做的事情。当普通的Thread完成Runnable(或Callable)的run方法后,会被传递给GarbageCollection进行收集。使用ExecutorService,线程将被搁置,不会为垃圾收集打勾。为此,需要关机。好的,回到我的问题。是否有任何理由经常在ExecutorService上调用关闭,甚至在

java - executorService.submit(Runnable) 返回的 future 对象是否包含对可运行对象的任何引用?

假设我们有以下代码:List>runningTasks;ExecutorServiceexecutor;...voidexecuteTask(Runnabletask){runningTasks.add(executor.submit(task));}我的问题是:runningTasks是否包含对task对象的引用?它能保持多长时间?任务完成后它还持有吗?为了避免内存泄漏,我是否必须小心删除添加到列表中的future? 最佳答案 直到执行者或Future对象持有对它的引用时是一个实现细节。因此,如果您的任务使用大量内存以至于您不得不