我一直读到java中的线程调度程序在一个进程中一次只运行一个线程。
假设我们有一个JVM运行一个CPU机器。因此,如果我启动10个线程,它们将由相同的线程调度程序管理。
发布于 2016-08-17 00:03:05
1-如果一个线程在当时运行,它怎么会并发?这难道不只是并发的错觉吗?
这既是一种幻觉,也是一种真实。这两项任务在没有你干预的情况下互相交替。因此,它确实是并发的,对于代码组织非常有用。如果同时运行多个任务而不通过线程为您执行切换,这将是一个绝对的噩梦。
然而,单个处理器从来不会在任何给定的时刻运行多个线程,因为它一次只能执行一个操作,从这个意义上说,这是一种幻觉。
2-我可以在同一个进程中在同一个JVM下运行10个线程吗?
是啊。见https://stackoverflow.com/a/7727922/998251。
摘要:您有数千个线程可用。
发布于 2016-08-17 00:03:45
这里有不同的东西在起作用。因此,单个cpu核心一次只能运行一个内核线程。一个JVM进程可能运行多少个内核线程取决于JVM。但是,即使使用单个内核线程,拥有多个Java线程也会增加并发性。虽然每个线程都需要时间限制,但它允许非阻塞线程执行操作,而另一个线程则被阻塞,从而导致总体执行时间更短。假设线程A进行网络调用并等待结果。线程B可以在A等待并执行一些计算时接管。如果它只是同步的,则在网络调用返回之前,执行的计算B无法启动。
https://stackoverflow.com/questions/38986184
复制相似问题