我在保持 vfs2 的 DefaultFileMonitor 线程处于 Activity 状态时遇到问题。在监视器对象启动后,执行的主线程就会正常终止。我想知道为什么这个对象不会被“监视”,而是直接走到最后。 (以日志消息“退出......”结束)
public static void main(String[] args) {
try {
Options options = new Options();
options.addOption("b", true, "path to the build file");
options.addOption("d", true, "directory to watch");
CommandLineParser parser = new PosixParser();
CommandLine cmd = parser.parse(options, args);
String dir = cmd.getOptionValue("d");
String buildFile = cmd.getOptionValue("b");
if(dir == null) {
logger.error("No directory specified," +
" use [-d 'name_of_dir'] to specify one");
return;
}
if(buildFile == null) {
logger.error("No build file path specified," +
" use [-b 'path_to_build_file'] to specify one");
return;
}
FileSystemManager fsManager = VFS.getManager();
FileObject listendir = fsManager.resolveFile(dir);
DefaultFileMonitor fm = new DefaultFileMonitor(new CustomFileListener(buildFile));
fm.setRecursive(true);
fm.addFile(listendir);
fm.start();
}catch(Exception e){
logger.error("Exception ", e);
}
logger.info("exitting....");
}
最佳答案
DefaultFileMonitor
的工作方式类似于守护线程,即即使监视器线程正在运行,虚拟机也会终止。解决方法是使用带有无限循环或您可以控制的其他类型循环的非守护线程。
关于java - vfs2 DefaultFileMonitor 线程提前终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13623537/