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

问题描述 投票:0回答:1

[尝试从虚拟机(管理程序为kvm)中从Gradle运行swing项目时遇到一个奇怪的问题。

该代码在从主机OS进行的每次尝试中都运行良好,但是在来宾内部运行时,大多数时候都挂在jframe.pack()方法中。我假设问题出在线程同步方面。

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

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

我对这里正在进行的线程的细微差别并不十分熟悉,问题的根源可能是什么?我没有在创建自己的线程等方面做任何花哨的事情。我只是按照“通常”的方式设置ui,并让swing处理自己的线程。

主持人:

  • CentOS 8流
  • 8核心/ 32g内存
  • Java 8
  • 来宾:

  • Ubuntu 19.10
  • 分配的8核心/ 16g内存
  • Java 8
  • 一个简单的摆动应用程序设置过程:

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$$$();
    }
}


当尝试从VM(管理程序为kvm)中从Gradle运行swing项目时,我遇到了一个奇怪的问题。在主机操作系统上的每次尝试中,该代码都能正常运行,但会挂在jframe.pack()...

java swing jframe freeze
1个回答
1
投票

我不十分了解正在进行的线程的细微差别,这可能是问题的根源吗?

© www.soinside.com 2019 - 2024. All rights reserved.