等待方法返回true

时间:2015-02-02 03:41:19

标签: java

我试图制作一个能够更新我正在制作的程序的启动器,但我遇到了一些问题。我希望启动器重量轻,所以我一直在使用timer.schedule(this, 0, checkVersionTime);来检查新版本。 (确切的时间不是必需的。默认值是10秒)。

问题在于此代码

if(!isOutdated(lastModified, sFile))
    continue;

if(scanner != null && !scanner.hasStopped())
    scanner.requestStop();

if((scanner == null || scanner.hasStopped())){
    downloadList.add(new QueuedFile(sUrl, fileId, sFile, lastModified));
}

scanner变量包含其他程序,调用requestStop将正确关闭程序而不是强行关闭它。如果是这样,在启动程序检测到程序关闭之前最多可能需要10秒,并从更新开始。

如何在致电requestStop()后发射器位于那里并等待程序关闭后才能这样做?

编辑: 这就是其他程序的启动方式,我不确定它是否算作第二个JVM

public boolean load(File file){
    try{
        //Setup and load the class
        URL[] urls = {file.toURI().toURL()};
        URLClassLoader loader = new URLClassLoader(urls);
        Class<?> clazz = loader.loadClass("scanner.Scanner");
        scannerObject = clazz.getConstructor().newInstance();
        return true;
    }catch(Exception e){
        return false;
    }
}

1 个答案:

答案 0 :(得分:0)

您可以将启动器注册为shutdown hook,这将使主应用程序退出时执行(除非它被实际的KILL信号杀死)。