java - StringBuffer or synchronized method? -
i have following code:
public class mylogger { private stringbuilder logger = new stringbuilder(); public void log(string message, string user) { logger.append(message); logger.append(user); } } the programmer must guarantee single mylogger object works multi-threaded system. how must code changed thread-safe?
a. synchronize log method
b. replace stringbuilder stringbuffer
please advise best approach.
stringbuffer not enough guarantee 2 information sent grouped :
logger.append(message); logger.append(user); it guarantees append() not invoked in concurrent way , don't risk break state of stringbuffer object.
indeed have 2 threads interleave during log() invocation , these invocations :
thread 1 : logger.append(message);
thread 2 : logger.append(message);
thread 1 : logger.append(user);
thread 2 : logger.append(user);
this better :
public synchronized void log(string message, string user) { logger.append(message); logger.append(user); } you can synchronization on private logger object.
has advantage not allow client of class lock outside class.
Comments
Post a Comment