我正在尝试使用 GUI 界面运行代码。但是在我继续我的主要方法之前,我需要关闭所有的 GUI 窗口(我需要的一些信息是从 GUI 窗口收集的,如果没有这些信息,我将无法运行我的其余代码)。因此,我决定使用 CountDownLatch 创建两个线程(其中一个是我的主要方法,另一个是处理我的 GUI 内容的类)。但是当我运行我的代码时,它会卡在 GUI 的末尾,并且不会继续执行我的代码。有人知道我的代码有什么问题吗?
public static void main (String[] args) throws IOException,InterruptedException{
long start = System.currentTimeMillis();
double longThreshold, shortThreshold, investment;
System.out.println("hello");
CountDownLatch startSignal = new CountDownLatch(1);
CountDownLatch stopSignal = new CountDownLatch(1);
ProgrammeSettings mySettings=new ProgrammeSettings(startSignal,stopSignal);
new Thread(mySettings).start(); // mysettings object is the GUI stuff
startSignal.countDown();
stopSignal.await();
longThreshold = mySettings.getlowerThreshold();
shortThreshold = mySettings.getupperThreshold();
investment =mySettings.getinvestment();
System.out.println("hello");
}
这也是我的 GUI 内容的 CountDownLatch 代码:
public class ProgrammeSettings implements Runnable {
private final CountDownLatch startSignal;
private final CountDownLatch stopSignal;
ProgrammeSettings(CountDownLatch startSignal, CountDownLatch doneSignal) {
this.startSignal = startSignal;
this.stopSignal = doneSignal;
}
public void graphicDesign(){
// do some GUI stuff
}
@Override
public void run() {
// TODO Auto-generated method stub
try{
startSignal.await();
graphicDesign();
stopSignal.countDown();
}
catch( InterruptedException e){
}
}
}