我正在使用这个:
@Override
public synchronized void catchException(String logTag, Exception e) {
StringBuilder trace = new StringBuilder(e.toString() + "n");
for (StackTraceElement el : e.getStackTrace()) {
trace.append("tt at " + el.toString() + "n");
}
write(logTag, trace.toString(), EXCEPTION);
}
由于StringBuilder
不是线程安全的,那么在线程安全synchronized
方法中使用它是否安全?我的猜测是,确实如此,因为对象本身是本地的,并且在方法内部是线程安全的。
是的,使用 StringBuilder
是安全的,因为它是该方法的本地方法,并且不会转义到任何其他线程。