вопреки тому, что каждый может сказать: не используйте isAvile () или getState (), оба требуют выполнения их в синхронизации. блок вдоль w / thread.start () и требует, чтобы поток фактически использовал себя в качестве монитора (де-факто это так)
Вместо этого просто перехватите исключение (IllegalThreadStateException
) из start () и проигнорируйте его.
try{
thread.start()
}catch(IllegalThreadStateException _x){
//ignore or log the reason, use getState(), if need be
}