我有一个类TestLogger
,它有一个void方法log(String s)
,它可以被多个线程访问。这里是我的代码Java多线程:线程安全数据结构与同步方法
public class TestLogger {
private static final StringBuffer buffer = new StringBuffer();
public static void log(String s) {
buffer.append(s);
}
}
我不知道在这里如果我使用的线程安全类StringBuffer
,我还需要把synchronized关键字的方法log(String)
,以确保该方法的线程安全?这种方法怎么样
public static void log(String s, int type) {
if (type == 0)
buffer.append(s);
if (type == 1)
buffer.append("SOME HEADER " + s);
}
这里类型没有在方法日志中修改。我需要使用synchronized关键字吗?
在Java中,同步关键字和线程安全类都可以提供线程安全性。我不确定何时使用其中一个和另一个?
如果使用缓冲区,则不需要同步,如果某些内容是“线程安全”,则一般规则可能使用同步本身 –