synchronized(...) 在带有 var=Thread.currentThread() 的代码块上

synchronized(...) on a code block with var=Thread.currentThread()

我正在阅读代码 class:

public class MultiThreadedServer implements Runnable {
    // some more code
    protected Thread runningThread = null;

    public void run() {
        synchronized(this) {
            this.runningThread = Thread.currentThread();
        }
        // lots of code
    }
}

这是什么意思?线程本身用作锁定资源的标志?完全不懂

有人知道吗?

this.runningThread = Thread.currentThread(); 简单地给你一个 link 到当前线程。

这样您就不必一直调用 Thread.currentThread(),从而节省了方法调用的开销。

嗯,protected Thread running thread = null; 中的 space 也无济于事...

this 是一个 Runnable,而不是一个线程,因此同步 而不是 在您编写时在线程本身上完成。

这可能有点令人困惑,但非常可行,例如。该对象被多个并发线程访问。

干杯,