线程调度程序在Java与单个CPU?
我一直在阅读Java中的Thread scheduler,它在一个进程中一次只运行一个线程。
假设我们有一台JVM运行一台CPU机器。 所以如果我启动10个线程,它们将由同一个线程调度程序管理。
如果当时有一个线程在运行,那么它是如何并发的? 这不仅仅是一种并发的幻觉吗?
我可以在同一个JVM下的单个进程中同时运行10个线程吗?
1-如果一个线程在运行,那么它是如何并发的? 这不仅仅是一种并发的幻觉吗?
这既是幻想又是现实。 这两项任务都是相互交替的,无需您的干预。 因此,它确实是并发的,对于代码组织来说非常有用。 在没有线程执行切换的情况下同时运行多个任务将是绝对的噩梦。
但是,单个处理器在任何时候都不会运行多个线程,因为它一次只能执行一次操作,从这个意义上讲,这是一种幻觉。
2-我可以在同一个JVM下的单个进程中同时运行10个线程吗?
是的。 请参阅https://stackoverflow.com/a/7727922/998251。
简介:您可以使用几千个线程。
在这里工作有不同的事情。 所以一个CPU核心一次只能运行一个内核线程。 单个JVM进程可能运行多少个内核线程取决于JVM。 尽管只有一个内核线程,但拥有多个Java线程可以提高并发性。 虽然每个线程都需要时间片,但它允许一个非阻塞的线程执行操作,而另一个线程被阻塞导致总体较低的执行时间。 想象一下线程A进行网络调用并等待结果。 当A正在等待并执行一些计算时,线程B可以接管。 如果只是同步,则在网络呼叫返回之前,执行的计算B不能启动。
链接地址: http://www.djcxy.com/p/79347.html