我正在使用ScheduledThreadPoolExecutor每隔fileIntervalInSeconds秒创建一个文件:
executorService = new ScheduledThreadPoolExecutor(1);
executorService.scheduleAtFixedRate(new Runnable()
{
@Override
public void run()
{
File file = new File(fileName);
if (file.exists())
{
Log.debug("creating new file");
openFileWriter(file);
}
}
}, fileIntervalInSeconds, fileIntervalInSeconds, TimeUnit.SECONDS);
}
private void openFileWriter() throws FileSystemNotificationException
{
// 1 - close exist writer
writer.close();
// 2 - rename to backup file name
...
// 3 - create new file
FileWriter writerFile = new FileWriter(fileName, true);
writer = new PrintWriter(writerFile);
}
而且我一直在将警报消息写入文件:
private synchronized void writeLine(String line) throws InterruptedException
{
writer.println(line);
}
我的问题是:
>在未关闭的情况下,如何确保使用作家? (writer.close())
>在开始写入之前,如何等待ScheduledThreadPoolExecutor完成文件的创建