我在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)
中访问此方法,对于来自Internet上不同客户端的多个请求,它是否可以是线程安全的?
答案 0 :(得分:0)
只要不将参数值存储在servlet的状态中,就不必担心参数的线程安全性。当参数作为参数从方法传递到方法而不是存储在共享状态时,它们是安全的。
此外,您的参数为String
类型。字符串类型是不可变的,因此是线程安全的。
以上适用于静态和实例方法。
答案 1 :(得分:0)
是。但只是因为你传递了不可变的String。静态方法只有在修改某些全局状态时才会变得多变。在Google上搜索:'功能没有副作用'
答案 2 :(得分:0)
根据你给出的例子,它似乎是一个纯粹的静态函数。
如果函数总是为相同的参数值返回相同的结果,并且没有像修改参数(或全局变量)或输出内容那样的副作用,则该函数称为纯函数。调用纯函数的唯一结果是返回值。纯函数的示例是strlen(),pow(),sqrt()等。
https://www.geeksforgeeks.org/pure-functions/
所以这里没有使用全局变量,因此不存在线程安全的情况。
答案 3 :(得分:0)
只要函数的内容是线程安全的,它就是线程安全的。例如。如果它是一个纯函数(仅适用于输入数据),它将是线程安全的。如果它使用另一个非线程安全的静态函数,那么它也不是线程安全的。