对静态方法的并发访问
2022-09-01 15:01:51
我有一个具有以下签名的静态方法:
public static List<ResultObjects> processRequest(RequestObject req){
// process the request object and return the results.
}
当同时对上述方法进行多个调用时,会发生什么情况?请求是并发处理还是一个接一个地处理?
我有一个具有以下签名的静态方法:
public static List<ResultObjects> processRequest(RequestObject req){
// process the request object and return the results.
}
当同时对上述方法进行多个调用时,会发生什么情况?请求是并发处理还是一个接一个地处理?
准确回答您的问题:
如果您正在处理需要并发访问的对象,则需要添加修饰符。synchronized
您对该方法的所有调用都将同时执行...但:
一旦静态方法的代码修改了静态变量,您可能会遇到并发问题(并且处于非线程安全的情况下)。在这种情况下,您可以将方法声明为synchronized
如果您的方法仅使用局部变量,则不会有并发问题。