Java 使用线程中断唤醒线程?

Java 使用线程中断唤醒线程?,java,android,multithreading,Java,Android,Multithreading,使用thread.interrupt定期唤醒Android上的线程有什么缺点吗。 线程循环与此类似: public void run() { while(true) { try { wait(); } catch(InterruptedException e) { performWork(); } } } 对。这是一种可怕的编码方式中断()例如,如果线程

使用thread.interrupt定期唤醒Android上的线程有什么缺点吗。 线程循环与此类似:

public void run()
{
   while(true)
   {
       try
       {
          wait();
       }
       catch(InterruptedException e)
       {
          performWork();
       }
   }
}

对。这是一种可怕的编码方式<代码>中断()例如,如果线程在I/O中被阻塞,并且不是这样使用,则会引发异常

取而代之的是,使用它来实现这一点。类似于
run()
中的内容:

并通知线程conditionForWaiting已更改:

synchronized (threadInstance) {
   threadInstance.notify();
}

我想它会慢一些,因为它会为它创建一个异常。顺便说一句,你怎么知道踏板是否被你或其他机制打断了?为什么不使用实际的
等待
/
通知
机制,而不是(ab)使用
等待
永远休眠?一个主要缺点是很难想到这种构造的用例。正如@immibis所建议的,使用Object
wait
/
notify
使用HandlerThread并发送消息以便按需执行一些工作感谢指向中断语义:@JE42 interrupt基本上是一个内置函数,允许优雅地终止线程,最好用于此。是的,我不知道你指出的所有附加语义。
synchronized (threadInstance) {
   threadInstance.notify();
}