我在多线程环境中有一个静态共享资源。那么,为了确保顺序访问,我需要为多线程环境考虑哪些事项?
答案 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这样的结构,你就可以了。