Если вы спрашиваете: «Из каких потоков безопасно получить доступ / изменить переменную mHandle
?», То сейчас ваш код не блокирует присвоение
mhandle = ...
так что было бы безопасно получить доступ к нему из потока петлителя.Так что, если у вас есть другой кусок кода в другом потоке, проверяющий
if (looperThread.mhandle == null) {
}
, это не будет поточно-ориентированным.Вам придется заблокировать как присвоение, так и доступ
synchronized (this) {
mhandle = ...
}
....
synchronized (looperThread) {
if (looperThread.mHandle == null) {
}
}
С другой стороны, если вы спрашиваете, в каком потоке вызывается handleMessage
, это следует из структуры кода, которыйон вызывается в потоке петли - похоже, Looper.loop()
заходит в цикл, ждет сообщений и затем вызывает handleMessage()
, когда приходит сообщение.Но только предположение.
Просто помните, что переменная на самом деле не принадлежит потоку - к ней можно получить доступ из любого потока.На самом деле вопрос в том, когда безопасно получить к нему доступ из каких потоков?