我有一个单身人士课程。 他的一个方法是:
public static void printMessage(boolean print, String text) {
if (print) {
System.out.print(text);
}
}
我有一个多线程应用程序,并且有多个线程正在使用此方法。 我不确定,但是我需要在printMessage的实现中添加互斥吗? 我认为我不需要,因为我没有使用任何班级成员。我是对的吗?
答案 0 :(得分:0)
这是一个只使用参数的静态方法。其中一个参数是原始的,另一个是不可变的。我没有理由同步该方法。
答案 1 :(得分:0)
在这种特定情况下,您不会访问任何共享存储,例如成员变量,静态字段等。但是,您还需要查看您调用的任何函数。它们是线程安全的吗?在您的情况下,System.out.print
线程安全吗?如果不是,那么两个调用如:
//Thread 1
printMessage(true, "abc");
// Thread 2
printMessage(true, "def");
可能会打印:
adebcf
因为交错。
现在,print
的Javadoc没有提到线程安全性。因此,假设它不线程安全。
由您来决定文本交错是否是您的用例的问题。如果是这样,请采取适当的预防措施,以防止打印输出交错。