草庐IT

Executorservice

全部标签

Java:ExecutorService 在特定队列大小后阻止提交

这个问题在这里已经有了答案:ThreadPoolExecutorBlockWhenQueueIsFull?(10个回答)关闭去年。我正在尝试编写一个解决方案,其中单个线程产生可以并行执行的I/O密集型任务。每个任务都有重要的内存数据。所以我希望能够限制当前待处理的任务数量。如果我这样创建ThreadPoolExecutor:ThreadPoolExecutorexecutor=newThreadPoolExecutor(numWorkerThreads,numWorkerThreads,0L,TimeUnit.MILLISECONDS,newLinkedBlockingQueue(ma

java - ExecutorService(特别是 ThreadPoolExecutor)线程安全吗?

ExecutorService是否保证线程安全?我将来自不同线程的作业提交到同一个ThreadPoolExecutor,我是否必须在交互/提交任务之前同步对执行器的访问? 最佳答案 (与其他答案相反)线程安全契约(Contract)is记录在案:查看interfacejavadocs(与方法的javadoc相反)。例如,在ExecutorService的底部您找到的javadoc:Memoryconsistencyeffects:ActionsinathreadpriortothesubmissionofaRunnableorCal

java - ExecutorService(特别是 ThreadPoolExecutor)线程安全吗?

ExecutorService是否保证线程安全?我将来自不同线程的作业提交到同一个ThreadPoolExecutor,我是否必须在交互/提交任务之前同步对执行器的访问? 最佳答案 (与其他答案相反)线程安全契约(Contract)is记录在案:查看interfacejavadocs(与方法的javadoc相反)。例如,在ExecutorService的底部您找到的javadoc:Memoryconsistencyeffects:ActionsinathreadpriortothesubmissionofaRunnableorCal

java - 什么时候应该使用 CompletionService 而不是 ExecutorService?

我刚刚在thisblogpost中找到了CompletionService.但是,这并没有真正展示CompletionService相对于标准ExecutorService的优势。可以用其中任何一个编写相同的代码。那么,CompletionService什么时候有用?您能否提供一个简短的代码示例以使其一目了然?例如,此代码示例仅显示不需要CompletionService的位置(=相当于ExecutorService)ExecutorServicetaskExecutor=Executors.newCachedThreadPool();//CompletionServicetaskCo

java - 什么时候应该使用 CompletionService 而不是 ExecutorService?

我刚刚在thisblogpost中找到了CompletionService.但是,这并没有真正展示CompletionService相对于标准ExecutorService的优势。可以用其中任何一个编写相同的代码。那么,CompletionService什么时候有用?您能否提供一个简短的代码示例以使其一目了然?例如,此代码示例仅显示不需要CompletionService的位置(=相当于ExecutorService)ExecutorServicetaskExecutor=Executors.newCachedThreadPool();//CompletionServicetaskCo

java - 等到所有线程在java中完成它们的工作

我正在编写一个应用程序,它有5个线程同时从Web获取一些信息并填充缓冲区类中的5个不同字段。当所有线程完成工作时,我需要验证缓冲区数据并将其存储在数据库中。我该怎么做(当所有线程完成工作时收到警报)? 最佳答案 我采用的方法是使用ExecutorService管理线程池。ExecutorServicees=Executors.newCachedThreadPool();for(inti=0;i 关于java-等到所有线程在java中完成它们的工作,我们在StackOverflow上找到一

java - 等到所有线程在java中完成它们的工作

我正在编写一个应用程序,它有5个线程同时从Web获取一些信息并填充缓冲区类中的5个不同字段。当所有线程完成工作时,我需要验证缓冲区数据并将其存储在数据库中。我该怎么做(当所有线程完成工作时收到警报)? 最佳答案 我采用的方法是使用ExecutorService管理线程池。ExecutorServicees=Executors.newCachedThreadPool();for(inti=0;i 关于java-等到所有线程在java中完成它们的工作,我们在StackOverflow上找到一

java - 是否有使用当前线程的 ExecutorService?

我追求的是一种兼容的方式来配置线程池的使用与否。理想情况下,其余代码根本不应该受到影响。我可以使用带有1个线程的线程池,但这不是我想要的。有什么想法吗?ExecutorServicees=threads==0?newCurrentThreadExecutor():Executors.newThreadPoolExecutor(threads);//es.execute/es.submit/newExecutorCompletionService(es)etc 最佳答案 您可以使用Guava的MoreExecutors.newDire

java - 是否有使用当前线程的 ExecutorService?

我追求的是一种兼容的方式来配置线程池的使用与否。理想情况下,其余代码根本不应该受到影响。我可以使用带有1个线程的线程池,但这不是我想要的。有什么想法吗?ExecutorServicees=threads==0?newCurrentThreadExecutor():Executors.newThreadPoolExecutor(threads);//es.execute/es.submit/newExecutorCompletionService(es)etc 最佳答案 您可以使用Guava的MoreExecutors.newDire

java - FixedThreadPool 与 CachedThreadPool : the lesser of two evils

我有一个程序可以生成线程(~5-150)来执行一堆任务。最初,我使用FixedThreadPool因为thissimilarquestion建议它们更适合生命周期更长的任务,并且由于我对多线程的了解非常有限,我认为线程的平均生命周期(几分钟)“longliving”。但是,我最近添加了生成额外线程的功能,这样做使我超出了我设置的线程限制。在这种情况下,最好是猜测并增加我可以允许的线程数还是切换到CachedThreadPool这样我就不会浪费线程了?初步尝试它们,似乎没有区别,所以我倾向于使用CachedThreadPool只是为了避免浪费。但是,线程的生命周期是否意味着我应该选择一个