Java 基本功 之中断线程的理解(二)
));
getCoor();
postInvalidate();
long endTime = System.currentTimeMillis();
if (endTime - beginTime < 150) {
Thread.sleep(150 - (endTime - beginTime));
}
}
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
}
}
}
实际上这两种写法都是利用了interrupt方法的特点,通过线程的中断置位或者异常抛出来跳出循环进而终结线程。如果对这段代码感兴趣,可以到文章最后下载代码。
最后做一下方法总结:
void interrupt()
向线程发送中断请求。线程的中断状态将被设置为true。如果目前该线程被一个sleep调用阻塞,那么,InterruptedException异常被抛出。
static boolean interrupted()
测试当前线程(即正在执行这一命令的线程)是否被中断,注意,这是一个静态方法。这一调用会产生副作用,它将当前线程的中断状态设置为false。
boolean isInterrupted()
测试线程是否被中断。不像静态的中断方法,这一调用不会改变线程的中断状态。
static Thread currentThread()
返回代表当前执行线程的Thread对象。