基于每个JVM的CPU核心数创建线程与多个JVM上运行的线程的不同之处如何创建CPU核心数上的线程数,条件是所有JVM都运行一个物理系统共享相同的CPU? 换句话说,一个多线程的Java程序并行运行8个线程与同一个多线程程序在8个不同的JVM上运行共享相同的CPU?每个JVM或每个CPU核心的线程数
我在下面给出了一些我发现可能用线程实现并行处理的方法,但是无法理解它们之间的本质区别?
方法一:一个线程定期查询数据库更改,启动(长时间运行)并行处理线程(无论何时发生更改)对更改数据起作用。 (工作涉及算术和坚持的结果数据库)
方法有两个:多个线程查询数据库中的数据发生变化,锁定修改的数据,每个线程启动一个线程(从一个线程池)此过程更改数据。
方法三:多线程,本质上来自不同的JVM作为单独的进程中运行,查询数据库,锁定已变更记录它已经找到并启动线程(线程池中每个对他们都有,最大线程该池是CPU内核的数量)来处理更改数据。
第三种方法反正比另外两种更好吗?如果是/否为什么? (因为监视线程运行在不同的JVM上,它们每个人都可以创建与CPU核心一样多的线程?例如,在8核心CPU中,在单独的JVM上创建8个监视线程(作为单独的进程),每个线程他们提交更改作业到8个线程池?但是,这个参数不会失败,因为只有8个物理内核,并且处理器只能在任何时候运行8个线程?)
您有任何其他有效方法实施这种情况?
通常情况下,在一台机器上运行多个JVM不会使应用程序更快 – ControlAltDel
这样做是否也会投下一个问题? –
由于缺乏具体的细节而下调并投票结束。仅仅说“线程”是不够的,我听到线程改善了一切!我们需要知道处理的细节 – ControlAltDel