我需要以某种方式停止此代码是否有任何方法可以做到这一点。如果有人可以回答问题并发布链接到你可以学习线程的地方,我就不和线程保持一致了,但是在开始的时候我没有读过很多关于java的书籍基础知识有点轻松,除了文件更改之类的东西BufferedWriters和东西。所以任何可以微调基础知识或从那里去的地方。对不起,我在一个问题上有疑问。 :)
private final Runnable updateCircle = new Runnable() {
@Override
public void run() {
lastColor = random.nextInt(2) == 1 ? redColor : greenColor;
paint.setColor(lastColor);
invalidate();
handler.postDelayed(this, 1000);
}
};
答案 0 :(得分:1)
Java中的线程当前轮询一个标志,以查看该线程是否为interrupted。在线程上调用interrupt()
后,Thread.interrupted()
函数将返回true
。因此,只要Thread.interrupted()
返回false
:
while (!Thread.interrupted()){
...
}
答案 1 :(得分:0)
只有一种方法可以正确地停止线程:从这个线程的代码中,通过离开run()方法。最常用的方法是实现这一目标:
易失性标志 - 在线程执行CPU工作时很有用
volatile boolean stop = false
void run() {
doComputation();
if (stop) return;
doAnotherComputation();
if (stop) return;
doMoreComputation();
}
中断 - 当你的线程主要睡在锁上时
void run() {
synchronized(lock) {
lock.wait(); //wait() will throw InterruptedException here
}
}
//from another thread
myThread.interrupt();`
因此,如果您调用库代码需要很长时间并且不对interrupt()作出反应,则无法正确中止此代码以停止正在运行的线程。