Java` synchronized`是否阻止对象引用或值?

alb*_*hin 0 java multithreading synchronization synchronized synchronized-block

鉴于以下输出:

    Path path1 = Paths.get("/Users/someone/foo");
    Path path2 = Paths.get("/Users/someone/foo");
    System.out.println(path1.toString() == path2.toString()); // outputs false
    System.out.println(path1.toString().equals(path2.toString())); // outputs true
Run Code Online (Sandbox Code Playgroud)

给定以下两个线程,两个线程是否可以同时在关键部分运行?

    // Thread 1
    synchronized (path1.toString()) {
        // Critical section
    }

    // Thread 2
    synchronized (path2.toString()) {
        // Critical section
    }
Run Code Online (Sandbox Code Playgroud)

use*_*421 6

参考值.这是一个没有区别的区别.toString()是一个参考.它不会与任何其他toString()值相同,除非两者都被实习,或者它们都来自相同或相同的字符串文字.