我没有计算机科学背景。我一直在学习java编程,并写了一些有用的毛病和坏程序。 : - /我是小公司中为数不多的开发人员之一,我需要改进和编写更好的程序。 我偶然发现了进入多线程的领域。在工作中,我听到人们谈论他们的计算机处理器如何有4核或8核等等。这是什么意思?在我理解多线程程序如何在不同的硬件规格上表现时,有一个黑盒子。因此,如果我运行一个在4核计算机上触发10个线程的java程序,它是如何工作的?如果我在8核处理器上运行相同的程序,我需要谨慎的一些事情是什么。还是2核处理器?
提前感谢您的帮助。
答案 0 :(得分:2)
很难准确回答。如果要优化,您应该进行基准测试。一些经验法则(有例外):
multi-core processor有几个(并行)CPUs或核心。每个核心都执行自己的线程(或进程或任务)。因此,几个线程真正并行(同时)执行。有些处理器是hyper-threaded(即两个寄存器组 - 共享...... - 共享相同的物理"核心"给出两个"虚拟"核心的错觉。
如果你运行一个10线程的Java程序(还有另外6个非线程系统" runnable"进程),那么操作系统内核(例如你的linux kernel)必须{{3这些10 + 6 = 16个任务(任务是多线程进程中的线程或单线程进程)。内核的调度程序将为每个任务提供核心上的运行时间量。在那段时间(例如几毫秒)之后,重新安排了一个新的可运行任务(在schedule操作系统上)
在preemptive multi-tasking以及关于tutorial,operating system和processes或tasks ...
上阅读好linux