线程安全方法中的线程不安全对象



我正在使用这个:

@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 是安全的,因为它是该方法的本地方法,并且不会转义到任何其他线程。

最新更新