如果.jar文件有多个线程

时间:2016-07-24 21:31:18

标签: java multithreading jar

当我创建一个.jar文件并且程序只使用主线程时,一切都很好但是当我需要并发并添加我自己的线程时,.jar文件无法打开或运行一个我双击它。

这是一个例子:

class idk {
    public static void main(String args[]) throws Exception {
        new Thread(new Runnable() {
            public void run() {
                try {
                    JFrame j = new JFrame();
                    j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    j.setVisible(true);

                    j.getContentPane().setPreferredSize(new Dimension(800, 500);
                    j.pack();
                    j.setLocationRelativeTo(null);
                } catch(Exception e1) {}
            }
        }).start();
     }
}

上面的代码在编译成.jar文件时不会因某种原因而执行。 但是,如果我只是使用相同的代码但省略了线程,那就可以了。

1 个答案:

答案 0 :(得分:0)

您必须只使用一个线程Swing的事件调度线程(EDT)与UI组件进行交互。使用以下代码创建主窗口:

SwingUtilities.invokeLater(new Runnable() { ... } );

应用程序中的并发应使用SwingWorker对象和publish方法完成,如果它们需要与UI交互。

创建自己的Thread并从这些线程创建或使用Swing组件会让您感到悲伤。

请参阅Concurrency in Swing