java隔几秒发数据_Java:每隔几秒钟创建一个文件
我正在使用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完成文件的创建
解决方法:
在写入文件之前如何检查文件是否存在.不需要后台线程或同步
private synchronized void writeLine(String line) {
if (!file.exists())
reopenWritingFile();
writer.println(line);
}
标签:multithreading,concurrency,file-io,thread-safety,java
我正在使用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完成文件的创建 解决方法: 在写入文件之前如何检查文件是否存在.不需要后台线程或同步 private synchronized void writeLine(String line) { if (!file.exists()) reopenWritingFile(); writer.println(line); } 标签:multithreading,concurrency,file-io,thread-safety,java