我要通过HandlerThread源代码,我不明白为什么HandlerThread的run()方法的一部分是同步的?为什么HandlerThread的run()方法的一部分是同步的?
@Override
public void run() {
mTid = Process.myTid();
Looper.prepare();
synchronized (this) {
mLooper = Looper.myLooper();
notifyAll();
}
Process.setThreadPriority(mPriority);
onLooperPrepared();
Looper.loop();
mTid = -1;
}
我认为run()
方法被调用的线程上它属于这样怎么能够从多个线程达到?
我希望当某人创建并启动同一个HandlerThread类的多个实例时,它可以处理这种情况。
也许其他线程锁定在'Thread'实例? (这通常是一个坏主意) – SLaks
这可能是因为在该类的其他部分有“//如果线程已启动,请等到活套已创建 synchronized(this){”。 –
这只是一个猜测(我不知道android),但它看起来像其他线程可能会调用'handlerThread.wait();'等待'mLooper'的值改变。 –