Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Java程序从线程中的开始?_Java_Multithreading - Fatal编程技术网

为什么Java程序从线程中的开始?

为什么Java程序从线程中的开始?,java,multithreading,Java,Multithreading,这听起来可能微不足道,但我想澄清这个疑问 为什么java程序从线程中的开始?为什么它不简单地作为一个没有主线程的进程启动,我们可以从主线程创建自己的线程呢。人们是否使用主线程作为主线程来控制生产代码中的其他线程?或者他们使用独立的主线程而不是主线程?我想你指的是java Swing应用程序?默认情况下,命令行java应用程序不会启动新线程,所有内容都只在主线程中运行。Swing使用一个单独的线程来处理UI事件(臭名昭著的事件分派线程-请参阅)您似乎有一个基本的误解 Java程序在线程中启动,因为

这听起来可能微不足道,但我想澄清这个疑问


为什么java程序从线程中的开始?为什么它不简单地作为一个没有主线程的进程启动,我们可以从主线程创建自己的线程呢。人们是否使用主线程作为主线程来控制生产代码中的其他线程?或者他们使用独立的主线程而不是主线程?

我想你指的是java Swing应用程序?默认情况下,命令行java应用程序不会启动新线程,所有内容都只在主线程中运行。Swing使用一个单独的线程来处理UI事件(臭名昭著的事件分派线程-请参阅)

您似乎有一个基本的误解

Java程序在线程中启动,因为您必须有一个线程。程序中执行的所有内容都在线程中执行

即使是单线程程序也有一个线程——它们只有一个线程

不启动线程而启动进程将毫无意义。进程无法执行任何操作,因为执行操作的唯一方法是执行指令,而执行指令的唯一方法是在线程中

至于主线程,这完全取决于程序的体系结构。有些程序确实有一个主线程(尽管它实际上相当罕见),但许多其他程序没有。您的主线程可能会启动许多其他线程,然后立即退出,或者它可能会永远控制程序的整个流程


要记住的重要一点是,就Java而言,主线程在任何方面都不是特别的,除了它在程序启动时启动它运行这一事实。该线程可以启动、暂停、停止、退出,程序将继续运行。程序仅在调用
exit
或每个非守护进程线程都已结束时结束。

Java代码仅在线程中执行。如果它运行,它将在线程中运行。乍一看,这可能看起来像是开销,但实际上它使VM保持简单(嗯,更简单)。VM不必区分“在线程中运行”和“在主进程中运行”


Thread对象还保存有关该线程执行的信息,如使用的CPU时间等。它与堆栈、监视器(同步对象)等相关联。如果主线程不是线程,VM将不得不以不同的方式管理所有这些,但是在线程和主进程上是一致的。

java程序在线程中以开头是错误的。当java程序要运行时,它是一个单独的进程,为了向用户生成最终输出,JVM将其任务分为不同的线程,以更优化的方式利用CPU周期和内存管理。要运行单个程序,JVM需要在执行该程序之前执行一些操作。如果所有的动作都是一个过程,那么它就不能很好地利用内存。因为我们不能为同一件事提供不同的内存空间

C系列语言也是这样吗?@Hakumanatata大多数面向对象语言和过程语言(尤其是那些以线程为设计理念的语言)都是这样工作的,尽管细节可能会有所不同。@Hakumanatata,它不是语言的东西,而是操作系统的东西。。。甚至不是这样,这是一个计算机架构的东西。“线程”是一个与计算机本身一样古老的概念的新名称。在我们开始编写包含多个名称的程序之前,没有人知道它需要一个名称。请在downvote中发表评论。有些人不能承认有些事情他们不知道。当他们看到一个他们不理解的问题或答案时,他们必须投反对票来验证自己的自我形象。有些人对什么样的问题适合这样做,什么不适合这样做有狭隘的看法。有些人看到一个不是用完美英语写的问题或答案时会生气。有些人只是些混蛋。我同意,没有必要投反对票。这是一个合理但基本的问题。