[英]How do i stop a Runnable thread or “interface”
我需要以某種方式停止此代碼是否有任何方法可以做到這一點。 如果有人可以回答問題並發布鏈接到你可以學習線程的地方,我就不和線程保持一致了,但是在開始的時候我沒有讀過很多關於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);
}
};
Java中的線程當前輪詢一個標志以查看該線程是否已被中斷 。 在線程上調用interrupt()
后, Thread.interrupted()
函數將返回true
。 因此,只要Thread.interrupted()
返回false
就可以運行:
while (!Thread.interrupted()){
...
}
只有一種方法可以正確地停止線程:從這個線程的代碼中,通過離開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()做出反應,則無法正確中止此代碼以停止正在運行的線程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.