当前位置: 首页 > 知识库问答 >
问题:

一个简单的java程序在没有显式线程创建的情况下如何运行?

段干德泽
2023-03-14

在没有显式线程创建的情况下,java程序在操作方面表现如何?整个程序是在一个进程中执行的吗?还是隐式地创建线程?这个问题在我学习线程以及线程如何在GUI交互中有用的时候出现,因为它允许用户与GUI交互,同时允许程序在后台执行操作。那么这是否意味着一个简单的java程序运行一个进程,在不使用线程的情况下顺序执行每一行?

共有2个答案

丰智
2023-03-14

在 Java 程序中,可以使用以下语句来知道(或打印)应用程序正在运行的线程的名称:html" target="_blank">系统.一个简单的 PrintHello 世界 程序将显示该程序在名为“main”的线程上运行。此外,可以使用线程toString() 方法来获取类似的信息。

关于GUI应用程序(例如Swing)中的线程:

GUI(图形用户界面)应用程序本质上是异步的。用户可以在任何时间选择菜单项或按下按钮,并期望应用程序迅速响应。JavaSwing和AWT通过创建一个单独的线程来处理用户发起的事件并更新呈现给用户的图形视图来解决这个问题。

事件处理代码在称为事件调度线程(EDT)的特殊线程上运行。大多数调用Swing方法的代码也在此线程上运行。大多数任务都是事件处理方法的调用,例如ActionListener.actionPerformed。事件调度线程上的任务必须快速完成;否则,未处理的事件将备份,用户界面将无响应或冻结。

其他任务可以由应用程序代码调度,使用静态方法<code>javax.swing.SwingUtilities。invokeLater或invokeAndWait。这两种方法在Swing应用程序的EDT中分别用于异步和同步执行代码。

可以通过调用静态方法<code>SwingUtilities.isEventDispatchThread

谭新知
2023-03-14

除非您通过实例化一个线程、使用执行程序或求助于为您执行两者之一的第三方库来显式启动一个新线程(例如大多数GUI库这样做是为了使UI不会阻止整个事情,就像你说的),整个程序就像你说的那样在一个线程上运行。

可能会有不明显的例外(比如使用流,它求助于一个公共的执行器),但这是一般的规则。

 类似资料:
  • 问题内容: 有人建议可以怎一个JAVA程序运行不写一个主要方法.. 例如: 不使用类中的公共静态void main(String arg []),如何在控制台上打印以上行。 问题答案: 直到JDK6,您都可以使用静态初始化程序块来打印消息。这样,一旦您的班级被加载,消息就会被打印出来。然后,技巧就变成了使用另一个程序来加载您的类。 当然,您可以按如下方式运行程序,您将看到消息;但是,该命令也会失败

  • 本文向大家介绍C#程序创建一个简单线程,包括了C#程序创建一个简单线程的使用技巧和注意事项,需要的朋友参考一下 为了创建线程,我创建了一个函数- 调用上述函数以创建线程,并创建一个新的ThreadStart委托- 示例 使用以下代码创建一个简单的线程。 输出结果

  • 我如何使一个独立的Windows可执行文件()为我的项目(我写在IntelliJ IDEA),没有安装程序为我的程序?我希望用户下载文件并在没有安装程序的情况下开箱运行,即使他们的计算机上没有JRE。这有可能吗?到目前为止,我已经读了一些关于以下选项的文章: launch4j-它似乎将所需的JRE文件与 install4j-它生成一个安装程序,一旦运行,它就会创建文件 所以,如果我理解正确的话,这

  • 我使用创建了一个应用程序构建文件。这将用和文件填充文件夹。 我在internet上进行了搜索,发现可以使用运行这些文件。不幸的是,这会产生以下错误输出: org.springframework.beans.factory.BeanCreationException:创建名为“org.springframework.boot.autocigure.orm.jpa.hibernatejpaAutoCo

  • 我正在尝试使用Poc为我们的项目创建一个侦探应用程序,以便使用Spring mvc(即没有Spring Boot)进行日志记录。我无法在网络上找到我的mvc文档/材料。 那么,如何创建Tracer、spanbean并注入记录器以进行日志记录呢?