Java 多个线程什么都不等待?
TLDR:在多线程大规模数据库插入过程中,多个线程在等待,没有明显的原因 我们需要在数据库中创建多行。为了加快插入速度,我们使用多线程,以便可以并行地生成和插入多个对象。我们正在使用Hibernate、Spring批处理和Spring调度(ThreadPoolTaskExecutor、Partitioner、ItemProcessor)。我们从一开始 我们使用JVisualVM查看线程状态,并注意到无论运行程序的硬件是什么,一次活动线程都不会超过8个。我们尝试了“标准桌面”计算机(双核),但也尝试了两台AIX:一台有8个活动CPU,一台有60个活动CPU 知道为什么一次不能有超过8个工作线程吗 我们已经检查过的事项列表:Java 多个线程什么都不等待?,java,multithreading,spring,hibernate,spring-batch,Java,Multithreading,Spring,Hibernate,Spring Batch,TLDR:在多线程大规模数据库插入过程中,多个线程在等待,没有明显的原因 我们需要在数据库中创建多行。为了加快插入速度,我们使用多线程,以便可以并行地生成和插入多个对象。我们正在使用Hibernate、Spring批处理和Spring调度(ThreadPoolTaskExecutor、Partitioner、ItemProcessor)。我们从一开始 我们使用JVisualVM查看线程状态,并注意到无论运行程序的硬件是什么,一次活动线程都不会超过8个。我们尝试了“标准桌面”计算机(双核),但也尝
- 所有线程都有一项工作要做(Partitioner和ThreadPoolTaskExecutor的配置使每个线程都有相同数量的数据要插入数据库)
- 我们尝试了各种提交间隔:1,P,其中P是分区的大小,N,其中N是所有P的总和(这不应该是问题的原因,但提交数据似乎是作业中很长的一部分,而数据生成很快)
- 8不是我们使用的任何对象参数的默认值