Write to text file from multiple threads?

java, multithreading

Solution

Access the file through a class that contains a synchronized method to write to the file. Only one thread at a time will be able to execute the method.

I think that Singleton pattern would fit for your problem:

package com.test.singleton;

public class Singleton {
    private static final Singleton inst= new Singleton();
    
    private Singleton() {
        super();
    }
    
    public synchronized void writeToFile(String str) {
        // Do whatever
    }
    
    public static Singleton getInstance() {
        return inst;
    }
    
}

Every time you need to write to your file, you only would have to call:

Singleton.getInstance().writeToFile("Hello!!");

Problem

i have 20 threads that write with the println() function on a file called results.txt. How can i synchronize them all? I note every time my program run i have different number of lines of text in results.txt. Thank you.

Original source

Related problems