为什么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中发表评论。有些人不能承认有些事情他们不知道。当他们看到一个他们不理解的问题或答案时,他们必须投反对票来验证自己的自我形象。有些人对什么样的问题适合这样做,什么不适合这样做有狭隘的看法。有些人看到一个不是用完美英语写的问题或答案时会生气。有些人只是些混蛋。我同意,没有必要投反对票。这是一个合理但基本的问题。