当我在代码中使用多线程时,我得到了下面这个惊人的异常,但是,我不知道它发生在哪里。而且,这种异常有时只会发生。
线程“AWT 0”中的异常: java.util.Vector$1.nextElement(Vector.java:348) at javax.swing.plaf.basic.BasicTableHeaderUI.getPreferredSize(BasicTableHeaderUI.java:793) at javax.swing.JComponent.getPreferredSize(JComponent.java:1660) java.util.NoSuchElementException的向量枚举
在我的应用程序中,我使用下面的代码进行多线程处理。
try {
Thread Thread4 = new Thread() {
public void run() {
GetOrderData(mID, "OrderInfo_Orn");
}
};
Thread4.start();
Thread4.sleep(20);
Thread Thread5 = new Thread() {
public void run() {
GetOrderData(mID, "OrderInfo_Parts");
}
};
Thread5.start();
Thread5.sleep(20);
Thread queryThread = new Thread() {
public void run() {
GetMasterData(mID, rowId);
}
};
queryThread.start();
queryThread.sleep(20);
Thread Thread2 = new Thread() {
public void run() {
GetDetailData(mID, "'RcvPrePolishGoods_Detail'");
}
};
Thread2.start();
Thread2.sleep(20);
Thread Thread3 = new Thread() {
public void run() {
GetDetailData(mID, "'RcvPrePolishGoods_Parts'");
}
};
Thread3.start();
Thread3.sleep(20);
} catch (InterruptedException ex) {
Logger.getLogger(RcvPrePolishGoods.class.getName()).log(Level.SEVERE, null, ex);
}发布于 2012-11-27 15:08:37
有几件事你想研究:
Get****Data函数中是异常的含义),您将遇到Get****Data问题(这就是您在错误中看到的AWT-EventQueue-0 )。相反,请使用SwingUtils.InvokeLater()。或者,如果您需要它在20 ms后运行(或每隔20 ms运行一次),请使用摆动定时器threadname.start();,然后在下一行调用threadname.sleep(20);。根据API接口,Thread.sleep会导致当前正在运行的线程等待--在本例中是EDT (而不是线程名)。如果希望线程名休眠,请将睡眠放在可运行的文件中,如下所示:
线程Thread5 =新线程(){ public void (){ Thread.sleep();GetOrderData(mID,"OrderInfo_Parts");};https://stackoverflow.com/questions/13581164
复制相似问题