关于java:synchronized(…)在代码块上使用var = Thread.currentThread()

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

本问题已经有最佳答案,请猛点这里访问。

我在这门课上读代码:

1
2
3
4
5
6
7
8
9
10
11
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是一个Runnable而不是一个线程,因此在编写时不会在线程本身上进行同步。

它可能有些混乱,但如果对象被几个并发线程访问,则非常可行。

干杯,


this.runningThread = Thread.currentThread();只是给您一个到当前线程的链接。

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

嗯,protected Thread running thread = null;的空间也没用……