使用var = Thread.currentThread()在代码块上进行synchronized(...)

时间:2015-05-29 09:24:23

标签: java multithreading runnable

我正在阅读这个类的代码:

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

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

这是什么意思?线程本身用作锁定资源的标志?我根本没有得到它。

有谁知道?

2 个答案:

答案 0 :(得分:2)

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

这可能有些令人困惑,但如果例如,则非常可行。该对象由几个并发线程访问。

干杯,

答案 1 :(得分:1)

this.runningThread = Thread.currentThread();只需为您提供当前主题的链接。

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

而且,protected Thread running thread = null;中的空格也无济于事......