我有一个在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
的块?如果我应该使用块,我应该使用什么对象来锁定它?
谢谢大家,你绝对回答了我的问题,并且给了我思考的食物。不幸的是,我不能接受多个答案: -/ – MarioP 2011-06-01 19:38:56