java 代码中的 synchronized (FrameworkZips.class) 如何理解?

 private static void refreshLocal() {
        //noinspection unchecked
        Map<String, List<LocalFrameworkZip>>[] zipsArray = new Map[TYPE_COUNT];
        for (int i = 0; i < TYPE_COUNT; i++) {
            zipsArray[i] = new TreeMap<>();
        }

        for (File dir : DownloadsUtil.getDownloadDirs(DownloadsUtil.DOWNLOAD_FRAMEWORK)) {
            if (!dir.isDirectory()) {
                continue;
            }
            for (String filename : dir.list()) {
                if (!filename.endsWith(".zip")) {
                    continue;
                }
                LocalFrameworkZip zip = analyze(new File(dir, filename));
                if (zip != null) {
                    Map<String, List<LocalFrameworkZip>> zips = zipsArray[zip.type.ordinal()];
                    List<LocalFrameworkZip> list = zips.get(zip.title);
                    if (list == null) {
                        list = new ArrayList<>(1);
                        zips.put(zip.title, list);
                    }
                    list.add(zip);
                }
            }
        }
        synchronized (FrameworkZips.class) {
            sLocal = zipsArray;
        }
    }
阅读 1.3k
1 个回答

多个不同的线程通过FrameworkZips类调用到这个代码块时互斥

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题