我已經參考this previous question以及其他來源,但無法使CountDownLatch正常工作。用於等待JFrame處置的Java CountDownLatch
背景:mainFrame創建一個名爲dataEntryFrame的新框架。當dataEntryFrame「Submit」按鈕被點擊時,記錄添加到數據庫和dataEntryFrame處理。此時,mainFrame應清除並重新加載一個顯示所有記錄的jList。
問題:當dataEntryFrame加載時,java凍結,dataEntryFrame組件永不加載。 我無法超越這部分... 然後,在DataEntryFrame中,CountDownLatch應該只在遞交按鈕被點擊後成功遞減,成功地將一條記錄添加到數據庫表中並處理它自己。或者,當用戶點擊取消...
代碼:從大型機
clearList();
CountDownLatch dataEntryDone = new CountDownLatch(1);
DataEntryFrame f = new DataEntryFrame(dataEntryDone);
Thread newThread = new Thread(f);
newThread.start();
dataEntryDone.await();
reLoadList();
代碼:從DataEntryFrame
public void run(){
initComponents();
loadOtherData();
this.setVisible(true);
}
void submit(){
addRecord();
this.dispose()
dataEntryDone.countDown();
}
沒有足夠的信息來告訴是肯定的,但它看起來像大型機事件調度線程鎖定時等待閂鎖。同時,DataEntryFrame代碼在Swing事件派發線程之外執行,這對於Swing/AWT對象是不正確的。提供更多的代碼會很有用。 – 2010-05-30 19:14:41