我正在編寫一個程序,它創建一個用戶輸入窗格,並且需要等待用戶在執行任何計算之前單擊「查詢」。目前,我正在使用ReentrantLock來執行此操作。可重入鎖定問題
input = new InputPanel(config, files, runLock);
JScrollPane inputScroll = new JScrollPane(input);
cySouthPanel.add("MyProgram", inputScroll);
cySouthPanel.setSelectedIndex(cySouthPanel.indexOfComponent("MyProgram"));
runLock.lock();
try {
// do stuff
}
finally {
runLock.unlock();
}
我目前獲取輸入面板的構造函數的鎖,當用戶點擊「查詢」按鈕釋放,但是當它遇到runLock.lock()
我上面的程序不會停止。任何想法爲什麼?
編輯:我的問題源於InputPanel與我上面描述的函數運行在同一個線程的事實。在這種情況下,lock()
不會阻止。
我需要一種方法來等待程序等待InputPanel。會創建自己的線程是一個可行的選擇?
這已經在InputPanel內完成了。不過,我還需要在InputPanel之外進行工作。 –
@Alex,您在輸入面板之外意味着什麼? – jjnguy
我正在用'main'方法編寫程序。當用戶單擊查詢按鈕時,輸入面板創建一個輸入對象並將其傳遞迴主方法。我需要在主要方法中用它做其他事情,但需要等待創建對象。 –