-1

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

4

2 回答 2

3

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

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

或者,您可以执行以下操作

public static synchronized void setResource(someResource) {
          resource = someResource;
}
于 2013-08-02T12:52:37.320 回答
0

如果它是只读资源尝试使其不可变,那么您不必担心多线程。

如果它不是只读的,那么请不要让它成为静态的。这是一个坏主意。因为要同步它的访问,你需要类级别的锁。需要仔细检查类级别的锁,它会对应用程序的性能产生不利影响。

可能是您的静态共享资源可以转换为使用任何并发数据结构,例如 ConcurrentHashMaP 、 ConcurrentLinkedQueue ,那么您就可以开始使用了。

于 2013-08-02T16:08:51.833 回答