首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java中的单CPU线程调度器?

java中的单CPU线程调度器?
EN

Stack Overflow用户
提问于 2016-08-16 23:55:55
回答 2查看 534关注 0票数 0

我一直读到java中的线程调度程序在一个进程中一次只运行一个线程。

假设我们有一个JVM运行一个CPU机器。因此,如果我启动10个线程,它们将由相同的线程调度程序管理。

  1. 如果在同一时间运行一个线程,那么这个线程如何并发?这难道不是一种并发的错觉吗?
  2. 我能否在同一个JVM下的单个进程中运行10个相同的线程?
EN

回答 2

Stack Overflow用户

发布于 2016-08-17 00:03:05

1-如果一个线程在当时运行,它怎么会并发?这难道不只是并发的错觉吗?

这既是一种幻觉,也是一种真实。这两项任务在没有你干预的情况下互相交替。因此,它确实是并发的,对于代码组织非常有用。如果同时运行多个任务而不通过线程为您执行切换,这将是一个绝对的噩梦。

然而,单个处理器从来不会在任何给定的时刻运行多个线程,因为它一次只能执行一个操作,从这个意义上说,这是一种幻觉。

2-我可以在同一个进程中在同一个JVM下运行10个线程吗?

是啊。见https://stackoverflow.com/a/7727922/998251

摘要:您有数千个线程可用。

票数 3
EN

Stack Overflow用户

发布于 2016-08-17 00:03:45

这里有不同的东西在起作用。因此,单个cpu核心一次只能运行一个内核线程。一个JVM进程可能运行多少个内核线程取决于JVM。但是,即使使用单个内核线程,拥有多个Java线程也会增加并发性。虽然每个线程都需要时间限制,但它允许非阻塞线程执行操作,而另一个线程则被阻塞,从而导致总体执行时间更短。假设线程A进行网络调用并等待结果。线程B可以在A等待并执行一些计算时接管。如果它只是同步的,则在网络调用返回之前,执行的计算B无法启动。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38986184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档