每次启动时我都有一个更新我的swing界面的线程。即使我使用invokeLater()
类的SwingUtilities
方法,我仍然有这个延迟。
这是我的线程代码的运行:
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();
}
}
Ant这就是我所说的
for (int i =63;i<66 ;i++) {
ping p = new ping("192.168.1."+i);
p.start();
}
答案 0 :(得分:3)
看起来您的代码正在破坏其目的:从您的线程中,您将代码提交到执行网络调用的主GUI线程,并且需要等待。
您应该在线程代码中从网络调用中获取结果,然后使用invokLater
用结果填充GUI。