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()方法不是。