【发布时间】:2011-09-06 08:56:37
【问题描述】:
我有一个在 Tomcat 上运行的 Web 应用程序。
需要在 Web 应用程序的多个位置进行多项计算。我可以进行这些计算静态辅助函数吗?如果服务器有足够的处理器内核,那么对该静态函数的多次调用(由对不同 servlet 的多个请求产生)可以并行运行吗?还是一个请求必须等到另一个请求完成调用?
public class Helper {
public static void doSomething(int arg1, int arg2) {
// do something with the args
return val;
}
}
如果调用并行运行: 我有另一个带有静态函数的助手类,但是这个类包含一个用于静态函数的私有静态成员。如何确保函数是线程安全的?
public class Helper {
private static SomeObject obj;
public static void changeMember() {
Helper.obj.changeValue();
}
public static String readMember() {
Helper.obj.readValue();
}
}
changeValue() 和readValue() 读取/更改Helper.obj 的相同成员变量。我必须同步整个静态函数,还是只同步使用Helper.obj 的块?如果我应该使用块,我应该使用什么对象来锁定它?
【问题讨论】:
-
谢谢大家,你们肯定回答了我的问题,也让我深思。不幸的是,我不能接受多个答案:-/
标签: java multithreading static static-methods