当前位置: 首页 > 面试题库 >

Java应用程序开始执行时,这些线程会受到哪些刺激?

靳涵亮
2023-03-14
问题内容

我创建了一个简单的Java应用程序,其中包含一个JFrame和几个JButton。当我尝试使用JVMTI检查Java应用程序时,我发现虽然我没有创建任何显式线程,但是却产生了许多显式线程。

我可以找到以下线程:

  • 销毁JavaVM
  • AWT-EventQueue-0
  • AWT关机
  • AWT-XAWT-守护线程
  • Java2D Disposer-守护程序线程
  • 线程-0-守护程序线程[由JVMTI代理创建]
  • 信号调度程序-守护线程
  • Finalize-守护进程线程
  • 参考处理程序-守护程序线程

他们大多数处于可运行状态。有人可以告诉我这些线程的功能吗?


问题答案:

这些线程由基础库用来管理窗口小部件,显示,事件循环以及图形应用程序所需的其他管道。

GUI应用程序通常具有很多活动的部分,如果您注意到您不必显式编写任何代码来管理这些部分(例如,更新屏幕,绘制按钮或处理鼠标移动)。这是一组后台线程,负责管理这些部分,并使您尽可能轻松地专注于应用程序逻辑。

这些线程由您使用的库(例如AWT,Swing等)产生,通常在终止时清理它们自己(以及它们管理的资源)。



 类似资料:
  • 本文向大家介绍Java 应用程序与小程序之间有哪些差别?相关面试题,主要包含被问及Java 应用程序与小程序之间有哪些差别?时的应答技巧和注意事项,需要的朋友参考一下 简单说应用程序是从主线程启动(也就是 方法)。applet 小程序没有 方法,主要是嵌在浏览器页面上运行(调用或者来启动),嵌入浏览器这点跟 flash 的小游戏类似。

  • 我搜索了关于测量Java应用程序执行时间的信息,得到了以下代码: 开始和停止之间的差异给了我执行时间。 注意:我知道这不是确切的执行时间。我只是需要多线程和单线程应用程序之间的比较的时间。 如果我这样更改代码会怎样: 执行10个线程。不管他们做什么。假设他们随机填充一个二维数组。 现在,stop-start给了我“全部”执行时间?或者我必须自己测量线程吗?

  • 使用此代码: 我得到一个setPriority按预期工作的输出--输出是5-5-7。但当注释出最重要的getPriority时,如下所示: 优先级没有任何改变,我得到5-5的输出。为什么会这样?是什么决定了线程的优先级是否被更改?

  • 问题内容: 是否有任何工具可以列出应用程序有效使用哪些类以及何时有效使用某些类,甚至更好地自动修剪JAR库以仅提供被引用和使用的类? 问题答案: 请记住,正如停机问题所证明的那样,您不能肯定地说某个特定类已使用或未使用。至少在任何中等复杂的应用程序上。这是因为类不仅在编译时绑定,而且可以加载: 基于XML配置(例如Spring); 从属性文件加载(例如JDBC驱动程序名称); 动态添加注释; 由于

  • 在阅读关于流的留档时,我遇到了以下句子: > 。。。试图从行为参数访问可变状态会给您带来错误的选择。。。如果您不同步对该状态的访问,您将面临数据竞争,因此您的代码将被破坏。。。[1] 如果行为参数确实有副作用。。。[没有]保证在同一个线程中执行同一流管道中“相同”元素上的不同操作。[2] 对于任何给定的元素,可以在库选择的任何时间和线程中执行该操作。[3] 这些句子没有区分顺序流和平行流。因此,我

  • 本文向大家介绍线程池都有哪些状态?相关面试题,主要包含被问及线程池都有哪些状态?时的应答技巧和注意事项,需要的朋友参考一下 RUNNING:这是最正常的状态,接受新的任务,处理等待队列中的任务。 SHUTDOWN:不接受新的任务提交,但是会继续处理等待队列中的任务。 STOP:不接受新的任务提交,不再处理等待队列中的任务,中断正在执行任务的线程。 TIDYING:所有的任务都销毁了,workCou