Thread-safe methods in Thread-safe Singleton in Java?

According to the answers to this question ( methods in a singleton class are thread-safe?), I created a thread-safe singleton (ThreadSafeSingleton) using Holder pattern based on https://en.wikipedia.org/wiki/Initialization-on-demand_holder_idiom.

Question:

  • If ThreadSafeSingleton is thread-safe, then methods in ThreadSafeSingleton are all thread-safe even though I don’t use any thread safe mechanism for each method ( without adding synchronized keyword on each log methods in ThreadSafeSingleton or Lock like in Option1) OR
  • should I use synchroized keyword on methods like in Option2 ?

    public class ThreadSafeSingleton
    {
    private ThreadSafeSingleton() {}
    
    private static class Holder {
        static final ThreadSafeSingletoninstance = new ThreadSafeSingleton();
    }
    
    public static ThreadSafeSingletongetInstance() {
        return Holder.instance;
    }
    
    // Option 1: are these methods thread-safe?
    public void log(Customer c, String message) {
        logger.info(c.getName(), message);
    }
    
    public void void log( String message) {
        logger.info(message);
    }
    
    // Option 2:  are these methods thread-safe?
    public synchronized void log(Customer c, String message) {
        logger.info(c.getName(), message);
    }
    
    public synchronized void log( String message) {
        logger.info(message);
    }
    }
    
    
    public class A {
    void writeLog(Customer c) {
        ThreadSafeSingleton.getInstance().log(c, “ name is set.”);
    }
    
    void writeLog(String message) {
        ThreadSafeSingleton.getInstance().log(message);
    }
    }
    
    public class B {
    void writeLog(Customer c) {
        ThreadSafeSingleton.getInstance().log(c, “ name is modified.”);
    }
    
    void writeLog(String message) {
        ThreadSafeSingleton.getInstance().log(message);
    }
    }