草庐IT

trap-executor

全部标签

应该永远运行的任务的 Java Executor 最佳实践

我正在处理一个需要异步运行多个任务的Java项目。我被引导相信Executor是我做到这一点的最佳方式,所以我正在熟悉它。(是的,学习是有报酬的!)但是,我不清楚什么是完成我想做的事情的最佳方法。为了争论,假设我有两个任务正在运行。两者都不会终止,并且两者都应该在应用程序的生命周期内运行。我正在尝试编写一个主包装类:如果任一任务抛出异常,包装器将捕获它并重新启动任务。如果任一任务运行完成,包装器将注意到并重新启动该任务。现在,应该注意的是,这两个任务的实现都会将run()中的代码包装在一个永远不会运行到完成的无限循环中,并带有一个应该处理的try/catchblock所有运行时异常都不

java - Executor 和 ExecutorService 有什么区别?

很难说出这里问的是什么。这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。为了帮助澄清这个问题以便可以重新打开它,visitthehelpcenter.关闭9年前。我想知道Executor和ExecutorService有什么区别?任何例子都会有所帮助。 最佳答案 Executor只是执行你给它的东西。ExecutorService添加了启动、关闭以及等待和查看您已提交以在Executor(它扩展)之上执行的作业状态的能力。 关于java-Exe

java - 如何从 Executors 中正确捕获 RuntimeExceptions?

假设我有以下代码:ExecutorServiceexecutor=Executors.newSingleThreadExecutor();executor.execute(myRunnable);现在,如果myRunnable抛出RuntimeExcpetion,我该如何捕捉它?一种方法是将我自己的ThreadFactory实现提供给newSingleThreadExecutor()并为Thread设置自定义uncaughtExceptionHandler从中产生的。另一种方法是将myRunnable包装到包含try-catchblock的本地(匿名)Runnable。也许还有其他类似

java - 我们什么时候应该使用 Java 的 Thread over Executor?

Executor看起来像是一个干净的抽象。您什么时候想直接使用Thread而不是依赖更健壮的执行器? 最佳答案 为了提供一些历史,Executors只是作为Java1.5中java标准的一部分添加的。所以在某些方面Executors可以被看作是处理Runnable任务的一种新的更好的抽象。有点过于简化了...-执行器是正确完成的线程,因此请优先使用它们。 关于java-我们什么时候应该使用Java的ThreadoverExecutor?,我们在StackOverflow上找到一个类似的问

java - Executor Service的shutdown和shutdownNow的区别

我想知道shutdown()和shutdownNow()关闭ExecutorService的基本区别?据我所知:shutdown()应该用于graceful关闭,这意味着应该允许所有正在运行并排队等待处理但未启动的任务完成shutdownNow()会进行一次abrupt关闭,这意味着一些未完成的任务被取消,未启动的任务也被取消。还有什么我遗漏的隐式/显式的吗?P.S:我在Howtoshutdownanexecutorservice上发现了另一个问题与此相关,但不完全是我想知道的。 最佳答案 总而言之,你可以这样想:shutdown(

java - Spring的ThreadPoolTask​​Executor的池大小问题

我正在对我的Spring应用程序进行一些负载测试,现在我对ThreadPoolTask​​Executor的配置有点困惑。内部使用的ThreadPoolExecutor的文档将corePoolSize描述为“保留在池中的线​​程数,即使它们是空闲的,[...]"和maximumPoolSize为“池中允许的最大线程数”。这显然意味着maximumPoolSize限制了池中的线程数。但相反,限制似乎是由corePoolSize设置的。实际上我只用100配置了corePoolSize并让maximumPoolSize未配置(这意味着使用默认值:Integer.MAX_VALUE=21474

java - Spring ThreadPoolTask​​Executor 只运行一个线程

我们在JMS消费者中使用ThreadPoolExecutor并将其注入(inject)到DefaultMessageListenerContainer中。我希望这会为许多消息运行并发线程,但是我们的日志显示线程id不会改变。我们的日志显示,对于不同的消息处理,线程id总是相同的24。这是该场景中的Spring配置:在没有将threadPoolExectuorbean注入(inject)DefaultMessageListenerContainer之后,消息现在正在不同的线程中执行。这是生成的配置:我已尝试阅读文档,但我不明白为什么会发生这种情况。有什么解释吗?

java - Spring ThreadPoolTask​​Executor vs Java Executorservice cachedthreadpool

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题吗?更新问题,以便editingthispost提供事实和引用来回答它.关闭8年前。Improvethisquestion使用的优缺点是什么SpringThreadPoolTaskExecutor与JavaExecutorservicecachedthreadpool即使spring是Java并发的包装器。只是想知道使用它们的灵active。 最佳答案 使用spring的ThreadPoolTask​​Executor的一个附加优势是它非常适合管理和监控(

java - Executors.newCachedThreadPool() 与 Executors.newFixedThreadPool()

newCachedThreadPool()与newFixedThreadPool()相比我什么时候应该使用其中一种?在资源利用方面哪种策略更好? 最佳答案 我认为文档很好地解释了这两个函数的区别和用法:newFixedThreadPoolCreatesathreadpoolthatreusesafixednumberofthreadsoperatingoffasharedunboundedqueue.Atanypoint,atmostnThreadsthreadswillbeactiveprocessingtasks.Ifaddit

tfs - 调用执行程序时发生异常 'executor://xunit/VsTestRunner2/uap' : Could not load file or assembly 'System. IO.FileSystem

我在VSTS构建上运行单元测试时遇到了一个问题。当我在本地VisualStudio上启动所有测试时,一切正常。完全没有错误。完美的。但是,当我通过VSTS构建上的测试任务启动测试时,出现此错误:Anexceptionoccurredwhileinvokingexecutor'executor://xunit/VsTestRunner2/uap':Couldnotloadfileorassembly'System.IO.FileSystem,Version=4.0.1.0,Culture=neutral,PublicKeyToken=***********'oroneofitsdepen