如何在多线程环境中使用静态

时间:2013-08-02 12:46:35

标签: java multithreading synchronization

我在多线程环境中有一个静态共享资源。那么,为了确保顺序访问,我需要为多线程环境考虑哪些事项?

2 个答案:

答案 0 :(得分:3)

使用类级别锁定对其执行操作。例如,

public static void setResource(someResource) {
     synchronized(ClassName.class) {
          resource = someResource;
     }
}

或者您可以执行以下操作

public static synchronized void setResource(someResource) {
          resource = someResource;
}

答案 1 :(得分:0)

如果它的ReadOnly资源试图使它不可变,那么你不必担心 多线程。

如果它不是ReadOnly然后尝试不要使它静态。这是一个坏主意。 因为要同步其访问权限,您需要类级别锁定。班级 锁需要仔细检查,否则会对性能产生不利影响 你的申请。

可能是您的静态共享资源可以转换为使用任何并发数据 像ConcurrentHashMaP,ConcurrentLinkedQueue这样的结构,你就可以了。