Java 单件和储物柜(互斥)
我有一个单身班。 他的方法之一是:Java 单件和储物柜(互斥),java,singleton,mutex,Java,Singleton,Mutex,我有一个单身班。 他的方法之一是: public static void printMessage(boolean print, String text) { if (print) { System.out.print(text); } } 我有一个多线程应用程序,并且不止一个线程正在使用这种方法。 我不确定,但我是否需要在printMessage的实现中添加互斥? 我想我不需要,因为我没有使用任何班级成员。我说得对吗?这是一种只使用参数的静态方法。其中一个参数
public static void printMessage(boolean print, String text) {
if (print) {
System.out.print(text);
}
}
我有一个多线程应用程序,并且不止一个线程正在使用这种方法。
我不确定,但我是否需要在printMessage的实现中添加互斥?
我想我不需要,因为我没有使用任何班级成员。我说得对吗?这是一种只使用参数的静态方法。其中一个参数是基元参数,另一个参数是不可变的。我看不出同步该方法的理由。在这种特定情况下,您没有访问任何共享存储,例如成员变量、静态字段等。但是,您还需要查看您调用的任何函数。它们是线程安全的吗?在您的情况下,
System.out.print
是线程安全的吗?如果不是,则两个呼叫,例如:
//Thread 1
printMessage(true, "abc");
// Thread 2
printMessage(true, "def");
可能会打印:
adebcf
因为交错
现在,Javadoc for没有提到线程安全。因此,假设它不是线程安全的
由您决定文本交错是否是用例的问题。如果是这样,请采取适当的预防措施,防止打印输出交错。您的问题中确实没有太多信息。从这一方法来看,我看不出您需要“互斥”的原因anything@user3668129你说得对,这里不需要加锁。但您应该记录您的方法,因为将来有人可以将类成员放入其中。而print()方法不是。