gpt4 book ai didi

java - Swing 在虚拟机中运行时遇到线程同步问题

转载 作者:行者123 更新时间:2023-12-02 09:06:41 33 4
gpt4 key购买 nike

当我尝试从虚拟机(虚拟机管理程序是 kvm)内的 Gradle 运行 swing 项目时,我遇到了一个奇怪的问题。

代码在主机操作系统的每次尝试中都运行良好,但在客户机中运行时大多数时候会卡在 jframe.pack() 方法中。我假设问题与线程同步有关。

与大多数 Swing 应用程序一样,尝试发布代码以在此处显示是不现实的......但我可以在 GitHub 中指出它。

我不会以任何巨大的方式使用线程,基本上只是让 swing 自行管理。我还为 guest 提供了充足的资源,并且运行任何其他应用程序时没有任何问题。

我不太熟悉这里发生的线程的细微差别,问题的根源可能是什么?我没有以创建自己的线程等方式做任何花哨的事情。我只是像“通常”那样设置我的 ui,并让 swing 处理它自己的线程。

主持人:

  • CentOS 8 流
  • 8 核/32g 内存
  • Java 8

嘉宾:

  • Ubuntu 19.10
  • 分配 8 核/16g 内存
  • Java 8

关于 Swing 应用程序如何设置的简化演练:

class Runner(){
private Gui gui;

public runGui(){ //what is run to run the gui
gui = new Gui();
}
}

// partially setup with Intellij's form builder
class Gui(){
private JFrame mainFrame;
//many other member variables and functions


public void Gui(){
//general setup of GUI code. generation of elements, event binding, etc
this.mainFrame = new JFrame();
...

// pack and open
this.mainFrame.pack();
this.mainFrame.setVisible(true);
}

{
//intellij autogenerated form builder. Standard setup code.
$$$setupUI$$$();
}
}


最佳答案

I'm not terribly familiar with the nuances of the threading going on here, what could be the source of the issue?

是的。这可能就是您问题的根源。虚拟机中的线程计时可能与桌面计算机中的不同。但是,如果您的代码编写正确,则不应受此影响。

如果没有更多信息(例如 minimal reproducible example ),我们能做的就是为您提供一些有关线程的一般资源,以及在 Swing 应用程序中执行线程的正确方法:

<小时/>

硬件特征不太可能与该问题相关。当然,它们不会影响您编写正确代码所需执行的操作。

关于java - Swing 在虚拟机中运行时遇到线程同步问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59762241/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com