草庐IT

Threadpool

全部标签

java - Java 中的有向图处理

我希望实现一个Java应用程序,该应用程序将计算一组要执行的任务。这些任务将相互依赖,形成一个有向图。是否有现有的SDK或算法(最好是Java)可以帮助我:定义任务图确保图中没有循环依赖使用线程池执行图中的任务第3步是最重要的部分。我需要以并行方式执行任务以获得最佳性能,同时确保任务不会在其依赖项之前执行。 最佳答案 看看之前的question,这基本上建议使用JGraphT.它显然会使1)变得容易,并且具有用于第3部分的循环检测器)。不要认为它会为您完成第3部分,但您需要做的就是获取所有出度数(或度数取决于您的表示)为0的顶点并开

java - 池大小实际上如何与 Spring 的计划任务一起工作?

我有一个这样安排的任务:我想我对计划任务如何与池大小一起工作有误解。尽管池大小为15,但似乎只使用了一个线程。例如,如果队列中有15个事件,我认为每分钟会有15个线程检查以从队列中删除一个事件。显然,这是错误的。我怎样才能使用Spring的调度程序抽象让15个线程在时间间隔内调用此方法?编辑:我想要完成的是:每隔半秒,我想检查是否有排队的事件要发送。完成后,我想发送最多15个(如果存在15个)。我将如何使用java线程的spring抽象来实现这一点? 最佳答案 首先是ScheduledThreadPoolExecutor的包装器扩展

java - Java中的一种负载平衡线程池

我正在寻找一个负载平衡的线程池,但到目前为止没有成功。(不确定负载平衡是否是正确的措辞)。让我解释一下我试图实现的目标。第1部分:我有乔布斯,有8到10个单一任务。在6核CPU上,我让8个线程并行处理此任务,这似乎提供了最佳性能。当一项任务准备就绪时,另一项任务可以开始。一旦完成所有十项任务,就完成了完整的工作。通常一项工作在30到60秒内完成。第二部分:不幸的是,有时这项工作需要两个多小时。由于必须计算的数据量,这是正确的。糟糕的是,在job1运行时没有其他作业可以启动(假设所有线程具有相同的持续时间),因为它正在使用所有线程。我的第一个想法:有12个线程,最多允许三个作业并行。但是

java - 如何确定ThreadPoolTask​​Executor池和队列大小?

关于如何确定线程池大小,这可能是一个更笼统的问题,但是在这种情况下,让我们使用SpringThreadPoolTaskExecutor。对于池核心,最大大小和队列容量,我具有以下配置。我已经了解了所有这些配置的含义-here是一个很好的答案。@SpringBootApplication@EnableAsyncpublicclassMySpringBootApp{publicstaticvoidmain(String[]args){ApplicationContextctx=SpringApplication.run(MySpringBootApp.class,args);}@Beanp

java - FixedThreadPool 和 ThreadPoolTask​​Executor 有什么区别?

使用以下配置配置线程池有区别吗:Executors.newFixedThreadPool(50);与做:ThreadPoolTaskExecutorexecutor=newThreadPoolTaskExecutor();executor.setCorePoolSize(50);executor.setThreadNamePrefix("thread-pool");executor.initialize();我对在运行时配置线程池不感兴趣(我认为这是使用ThreadPoolTask​​Executor的主要驱动因素)。 最佳答案 T

java - 使用 Executors 服务在 Java 中创建固定大小线程池的最佳方式

我正在使用Java中的Executors框架为多线程应用程序创建线程池,我有一个与性能相关的问题。我有一个可以在实时或非实时模式下工作的应用程序。如果是实时的,我只是使用以下内容:THREAD_POOL=Executors.newCachedThreadPool();但如果不是实时的,我希望能够控制线程池的大小。为此,我正在考虑2个选项,但我不太了解其中的区别,以及哪个会表现更好。选项1是使用简单的方法:THREAD_POOL=Executors.newFixedThreadPool(threadPoolSize);选项2是创建我自己的ThreadPoolExecutor,如下所示:R

java - tomcat 6线程池异步处理

简短的问题:在Tomcat6应用程序中-我如何运行(单独的)线程池?运行线程池的最佳解决方案是什么?长问题:我这里有一个简单的需求;轮询数据库以获取某些数据,同时允许Web客户端等待答案(长轮询连接)。当该数据在数据库中可用时,我会向相关客户发送回复。话虽如此,我宁愿目前不深入研究任何框架(quartzscheduler也许吧?)。因此,正如我得出的结论,我需要一个线程池来在后台完成这项工作。那么如果我要使用Thread(实际上是Runnable),哪个类可以组织这一切?有排序吗ThreadPool解决方案?有什么推荐吗? 最佳答案

java - ThreadPoolExecutor 具有自定义行为的固定线程池

我是这个主题的新手...我正在使用通过Executors.newFixedThreadPool(10)创建的ThreadPoolExecutor,在池满后我开始得到RejectedExecutionException。有没有办法“强制”执行者将新任务置于“等待”状态,而不是拒绝它并在池释放时启动它?谢谢关于这个的问题https://github.com/evilsocket/dsploit/issues/159涉及的代码行https://github.com/evilsocket/dsploit/blob/master/src/it/evilsocket/dsploit/net/Net

java - 为什么 ThreadPoolExecutor 会在 keepAliveTime 之后将线程减少到 corePoolSize 以下?

我一直在研究使用ThreadPoolExecutor和JDK6进行线程池的不同策略。我有一个优先级队列在工作,但不确定我是否喜欢在keepAliveTime之后池没有调整大小的方式(无界队列得到的结果)。因此,我正在查看使用LinkedBlockingQueue和CallerRuns策略的ThreadPoolExecutor。我现在遇到的问题是池增加,正如文档所解释的那样,但是在任务完成并且keepAliveTime开始运行后,getPoolSize显示池减少到零。下面的示例代码应该让您了解我的问题的基础:publicclassThreadPoolingDemo{privatefina

Java - 如何在等待数据的进程上实现线程

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我是多线程编程的新手,我希望能深入了解实现以下想法的最佳方式。现在我的代码是这样工作的它是单线程的,因此在处理每条数据并将其写入数据库所花费的时间里,新数据进来并排队,这会大大降低速度。我在4CPU服务器上运行,但当前设置仅使用1个。我想把中间部分完成的工作分到其余3个CPU上。我将如何最好地做到这一点?我以为我可以为每个新数据创建一个新线程,但我们谈论