小编use*_*311的帖子

为什么这个静态java方法不是线程安全的?

以下方法不访问任何共享变量.它仍然不是线程安全的.我要么测试错误,要么我错过了什么.请解释.

方法:

public static boolean acquireFolderLock(File directoryPath) {
    final String LOCK_FILE_NAME = ".lock";
    boolean isLocked = false;
    if(directoryPath != null && directoryPath.isDirectory()) {
        File lockFile = new File(new StringBuilder(directoryPath.getAbsolutePath()).append(File.separatorChar).append(LOCK_FILE_NAME).toString());
        if(lockFile.exists()) {
            isLocked = false;
        } else {
            try {
                lockFile.createNewFile();
                isLocked = true;
            } catch(IOException ioex) {
                isLocked = false;
            }
        }
    }
    return isLocked;
}
Run Code Online (Sandbox Code Playgroud)

测试的线程类

class AThread extends Thread {
String name;
public AThread(String name) {
    this.name = name;
}

@Override
public void run() {
    File f = …
Run Code Online (Sandbox Code Playgroud)

java static thread-safety

2
推荐指数
1
解决办法
2132
查看次数

标签 统计

java ×1

static ×1

thread-safety ×1