2

用代码如

synchronized (this)
{
    mTimeOutRunnable = new Runnable()
    {
        @Override
        public void run()
        {
            ..some code
        }
    };
}

新类的引用分配Runnable被块覆盖,但是 run() 内的代码(在块外被异步调用)也会进入synchronized块吗?

我首先包装了同步块,因为它是从工作线程调用的,我想确保调用(主)线程也可以访问该mTimeOutRunnable对象。

4

2 回答 2

5

不,该块仅涵盖您的Runnableto分配,而不是对该方法的后续调用。 mTimeOutRunnablesynchronizedrun()

于 2012-12-04T18:09:14.643 回答
1
mTimeOutRunnable = new Runnable()
    {
        @Override
        public void run()
        {
            ..some code
        }
    };

synchronized(this){
     obj = new SomeClass();
}

所以只有引用分配被synchronized块覆盖

于 2012-12-04T18:14:04.690 回答