我正在编写一个程序,它创建一个用户输入窗格,并且需要等待用户在执行任何计算之前单击“查询”。目前,我正在使用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'方法编写程序。当用户单击查询按钮时,输入面板创建一个输入对象并将其传递回主方法。我需要在主要方法中用它做其他事情,但需要等待创建对象。 –