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
经验分享 程序员 微信小程序 职场和发展