【发布时间】:2018-10-23 16:44:50
【问题描述】:
我在 java JSP / Servlet 中有一个 Web 应用程序
我的查询是:
如果我有一个util方法如下
public static String doUtil(String param) {
//Some processing on param.........
String result = someProcess(param);
return result;
}
查询是否在 Servlet Class.method(param) 中访问此方法,对于来自互联网上不同客户端的多个请求是否是线程安全的?
【问题讨论】:
-
Java 不是 Javascript。请努力找出您要学习的语言的名称。
-
不幸的是,没有足够的信息来确定您正在做的事情是否是线程安全的。例如,如果
someProcess(param)使用并更改了某些全局状态,则它可能不是线程安全的。 -
不要问个别方法的线程安全。重要的是他们操作的数据。线程安全的中心思想是防止线程 B、C 和 D 在线程 A 正在更新它的过程中看到一些处于临时、不一致/无效状态的数据集合。您的示例中唯一可见的数据是单个
String对象。 Java 中的字符串是不可变的——任何线程都不可能更新字符串——因此,如果您只担心该字符串的内部一致性,那么它会自动成为线程安全的。
标签: java multithreading methods static