Java 使用线程中断唤醒线程?
使用thread.interrupt定期唤醒Android上的线程有什么缺点吗。 线程循环与此类似:Java 使用线程中断唤醒线程?,java,android,multithreading,Java,Android,Multithreading,使用thread.interrupt定期唤醒Android上的线程有什么缺点吗。 线程循环与此类似: public void run() { while(true) { try { wait(); } catch(InterruptedException e) { performWork(); } } } 对。这是一种可怕的编码方式中断()例如,如果线程
public void run()
{
while(true)
{
try
{
wait();
}
catch(InterruptedException e)
{
performWork();
}
}
}
对。这是一种可怕的编码方式<代码>中断()例如,如果线程在I/O中被阻塞,并且不是这样使用,则会引发异常 取而代之的是,使用它来实现这一点。类似于
run()
中的内容:
并通知线程conditionForWaiting已更改:
synchronized (threadInstance) {
threadInstance.notify();
}
我想它会慢一些,因为它会为它创建一个异常。顺便说一句,你怎么知道踏板是否被你或其他机制打断了?为什么不使用实际的
等待
/通知
机制,而不是(ab)使用等待
永远休眠?一个主要缺点是很难想到这种构造的用例。正如@immibis所建议的,使用Objectwait
/notify
使用HandlerThread并发送消息以便按需执行一些工作感谢指向中断语义:@JE42 interrupt基本上是一个内置函数,允许优雅地终止线程,最好用于此。是的,我不知道你指出的所有附加语义。
synchronized (threadInstance) {
threadInstance.notify();
}