public lyridisplay (java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();//to create a JList
/* folowing code inside try preforms DB operations*/
/*It will return array of string s*/
try {
s = insert.select();
} catch (ClassNotFoundException ex) {
Logger.getLogger(lyridisplay.class.getName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {
Logger.getLogger(lyridisplay.class.getName()).log(Level.SEVERE, null, ex);
}
//now set the string s to JList
jList1.setModel(new javax.swing.AbstractListModel() {
String[] strings =s;
public int getSize() { return strings.length; }
public Object getElementAt(int i) { return strings[i]; }
});
}
我认为上面的代码应该阻止EDT
,因为在设置之前的数据库操作JList
并且它运行。EDT
但它没有。程序运行顺利。我之前做过类似的事情,导致被阻止EDT
和冻结的程序。我执行了根据 SO users 的建议,在单独的线程中编写代码。为什么这段代码不会阻塞EDT
?