Java 显示线程和摆动的更新延迟

Java 显示线程和摆动的更新延迟,java,multithreading,swing,Java,Multithreading,Swing,每次启动swing接口时,我都会有一个线程更新我的swing接口。即使我使用了SwingUtilities类的invokeLater()方法,我仍然有这个延迟 这是我的线程代码的运行: public void run() { final int timeout=2000; SwingUtilities.invokeLater(new Runnable() { public void run() { try {

每次启动swing接口时,我都会有一个线程更新我的swing接口。即使我使用了
SwingUtilities
类的
invokeLater()
方法,我仍然有这个延迟

这是我的线程代码的运行:

public void run() {
    final int timeout=2000;
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            try {
                if (InetAddress.getByName(host).isReachable(timeout)){
                    ServerFrame.listModel.addElement(InetAddress.getByName(host).getHostName() + '\n');
                }
            } catch (UnknownHostException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    });

    try {
        Thread.sleep(10);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
蚂蚁:我就是这么叫它的

for (int i =63;i<66 ;i++) {
    ping p = new ping("192.168.1."+i);
    p.start();
}

for(int i=63;i您的代码似乎违背了它的目的。注意:您正在从线程向主GUI线程提交代码,该线程执行网络调用并等待


您应该从线程代码中的网络调用中获得结果,然后使用
invokLater
将结果填充到GUI中。

看起来您的代码违背了它的目的。注意:从您的线程,您将代码提交给主GUI线程,该线程执行网络调用,并且需要等待

您应该从线程代码中的网络调用中获得结果,然后使用
invokLater
将结果填充到GUI中。

通读,特别是看,它就是为此目的设计的……通读,特别是看,它就是为此目的设计的。。。