java线程可以在运行在多个cpu核上吗
6个回答
展开全部
首先我们需要知道java是运行在JVM虚拟机上的,而JVM虚拟机是一个进程。
现在讨论线程的实现方式:
1.如果只是用户级线程实现方式,则java的多线程是只可以在一个CPU上运行的,即内核只能将处理器分配给进程,即使有多个处理器,也无法实现一个进程中的多个线程的并行执行。
2.如果是内核级线程实现方式,则java的多线程可以在多个CPU上运行, 即内核可以在多个处理器上调度一个进程的多个线程实现同步并行执行。
3.如果是混合实现方式(即用户和内核的线程实现方式),则java的多线程可以在多个CPU上运行,相对于只是内核级线程而言,混合实现方式的效率更高。
在现代操作系统中,Windows 2000/XP、OS/2、Linux、Mac OS X实现的是内核级线程,Solaris实现的是混合方式,所以在上述这些操作系统下运行的java多线程是被分配到多个CPU中执行的。其实观测java多个线程是否被分配到多个CPU上执行,主要是确定其操作系统对于多线程是如何实现的。谢谢,欢迎批评和讨论!
现在讨论线程的实现方式:
1.如果只是用户级线程实现方式,则java的多线程是只可以在一个CPU上运行的,即内核只能将处理器分配给进程,即使有多个处理器,也无法实现一个进程中的多个线程的并行执行。
2.如果是内核级线程实现方式,则java的多线程可以在多个CPU上运行, 即内核可以在多个处理器上调度一个进程的多个线程实现同步并行执行。
3.如果是混合实现方式(即用户和内核的线程实现方式),则java的多线程可以在多个CPU上运行,相对于只是内核级线程而言,混合实现方式的效率更高。
在现代操作系统中,Windows 2000/XP、OS/2、Linux、Mac OS X实现的是内核级线程,Solaris实现的是混合方式,所以在上述这些操作系统下运行的java多线程是被分配到多个CPU中执行的。其实观测java多个线程是否被分配到多个CPU上执行,主要是确定其操作系统对于多线程是如何实现的。谢谢,欢迎批评和讨论!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询