Java 多线程编程和支持操作系统、CPU?

Java 多线程编程和支持操作系统、CPU?,java,multithreading,Java,Multithreading,我试图理解多线程的概念。多线程的支持是否来自: 1) 来自操作系统?(或) 2) 语言本身?(如果我是正确的,就像Java) CPU的作用是什么,多线程能力是否也是由CPU决定的(不考虑多核处理器) 是否存在这样一种情况:操作系统或CPU不支持多线程,但语言本身仍然可能支持多线程 有人能帮我理解这一点吗?线程是一个指令序列,可以由调度程序独立于其他此类序列进行管理 通常,调度程序是操作系统的一部分(例如) 在某些方法中(例如),调度器是语言或运行时环境的一部分 在现代计算环境中,线程数通常超过C

我试图理解多线程的概念。多线程的支持是否来自:

1) 来自操作系统?(或)
2) 语言本身?(如果我是正确的,就像Java)

CPU的作用是什么,多线程能力是否也是由CPU决定的(不考虑多核处理器)

是否存在这样一种情况:操作系统或CPU不支持多线程,但语言本身仍然可能支持多线程


有人能帮我理解这一点吗?

线程是一个指令序列,可以由调度程序独立于其他此类序列进行管理

通常,调度程序是操作系统的一部分(例如)

在某些方法中(例如),调度器是语言或运行时环境的一部分


在现代计算环境中,线程数通常超过CPU核数。当线程轮流在可用硬件上运行时,这通常通过时间切片来处理。调度程序的任务是管理线程。

线程是一系列指令,可由调度程序独立于其他此类序列进行管理

通常,调度程序是操作系统的一部分(例如)

在某些方法中(例如),调度器是语言或运行时环境的一部分

在现代计算环境中,线程数通常超过CPU核数。当线程轮流在可用硬件上运行时,这通常通过时间切片来处理。调度程序的任务是管理这些信息。

提供了一些信息

基本上,对于Java来说,多线程支持来自操作系统和Java。例如,Python(标准的CPython只有一个围绕Linux线程的包装器)就不会发生这种情况

详细说明CPU为实现多线程而执行的操作

理论上,是的,一种语言可以是线程的实现者。根据您对它的看法,C不依赖于操作系统,它自己执行线程(主要是因为操作系统是用C编写的)。上面的链接也说明了这一点

执行自己的线程的语言可能不如操作系统级线程效率高,因此操作系统线程是首选,并且通常存在。

有一些信息

基本上,对于Java来说,多线程支持来自操作系统和Java。例如,Python(标准的CPython只有一个围绕Linux线程的包装器)就不会发生这种情况

详细说明CPU为实现多线程而执行的操作

理论上,是的,一种语言可以是线程的实现者。根据您对它的看法,C不依赖于操作系统,它自己执行线程(主要是因为操作系统是用C编写的)。上面的链接也说明了这一点


执行自己的线程的语言可能没有操作系统级线程效率高,因此操作系统线程是首选,并且通常存在。

您的问题非常广泛,很难回答。你问的是现实世界还是理论上可能发生的事情?Java进程作为操作系统进程在JRE下运行,其中可以有多个线程。由于Java是独立于平台的,因此JRE实现的具体实现各不相同。例如,有一些新的非阻塞算法可以利用现代硬件并提高性能。我试图在更高的层次上理解操作系统、CPU和语言本身对多线程编程的作用;当然,不是深度问题。你的问题很广泛,很难回答。你问的是现实世界还是理论上可能发生的事情?Java进程作为操作系统进程在JRE下运行,其中可以有多个线程。由于Java是独立于平台的,因此JRE实现的具体实现各不相同。例如,有一些新的非阻塞算法可以利用现代硬件并提高性能。我试图在更高的层次上理解操作系统、CPU和语言本身对多线程编程的作用;当然,不是在深度层次。
C不依赖于操作系统
——例如,如果这里的
C
用于实现固件或操作系统,那么这是正确的。在这种情况下,它可能依赖于汇编与(微)处理器交互并实现线程的概念(通常是在内核中实现的调度器)。在其他情况下,用C编写的应用程序很可能依赖于操作系统来使用多线程支持—例如,在Windows/Linux/maOS上运行的应用程序。
C不依赖操作系统
—例如,如果这里的
C
用于实现固件或操作系统,那么这是正确的。在这种情况下,它可能依赖于汇编与(微)处理器交互并实现线程的概念(通常是在内核中实现的调度器)。在其他情况下,用C编写的应用程序很可能依赖操作系统来使用多线程支持,例如,运行在Windows/Linux/maOS上的应用程序。