Приостановка выполнения до завершения writeStringToFile - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть строка, которая записывает строку в файл, используя apache commons io :

FileUtils.writeStringToFile(f, doc.outerHtml(), "UTF-8", false);

Я считаю, что выполнение продолжается даже до того, как файл будет полностью записан.

Я не хочу, чтобы выполнение продолжалось, пока этот файл не будет записан. Есть ли способ сделать это?

UPDATE

Как это?

import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

class WriteFile implements Runnable {
private CountDownLatch latch;

public WriteFile(CountDownLatch latch) {
    this.latch = latch;
}

public void run() {
    System.out.println("Started.");
    // Do something - in this case write to file
    FileUtils.writeStringToFile(f, doc.outerHtml(), "UTF-8", false);
    latch.countDown();
}

Тогда в родительском коде:

CountDownLatch latch = new CountDownLatch(1);
ExecutorService executor = Executors.newFixedThreadPool(1);
executor.submit(new WriteFile(latch));

    try {
        latch.await();  // wait until latch counted down to 0
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

    System.out.println("Completed.");
...