android執行緒start()、interrupt()之重複使用
這次我遇到的問題是我想開啟一個執行緒每隔100ms監聽一次scrollview滑動高度,start()後執行緒run,監聽30次後停止執行緒,呼叫interrupt()方法中斷執行緒,當再滑動時繼續start()執行緒,30次後interrupt(),問題是如果使用者連續滑動,則是開啟了多個執行緒,如果用執行緒類初始化物件,然後該物件start(),interrupt(),那麼必然會導致僅僅中斷了一個執行緒物件,之前的物件還在不停地執行執行緒。我的解決辦法是:
不初始化物件,直接 new MyThread().start();然後在MyThread()類的run()中判斷當執行了30次後,Thread.currentThread().interrupt();把當前這個類所執行的執行緒中斷,也就不會存在還有這個類的物件沒被中斷繼續執行的情況,也就解決了我的問題。
部分程式碼:
public class MyThread extends Thread{
int y=9999;
@Override
public void run() {
super.run();
while(!Thread.currentThread().isInterrupted()){//!Thread.currentThread().isInterrupted()//!thread.isInterrupted()
if(y!=sc2.getScrollY()){
y=sc2.getScrollY();
}else{
Message msg=new Message();
msg.what=9;
mHandler.sendMessage(msg);
}
Log.v("sc2.getScrollY()!!!!!!!", "sc2.getScrollY():"+sc2.getScrollY());
if(sc2.getScrollY()==dpi*18*45){//第3輪第一張(0,0)座標處
Message msg=new Message();
msg.what=8;
mHandler.sendMessage(msg);
}
try {
if(iflg<30){
Thread.sleep(100);
iflg=iflg+1;
}
if(iflg==30){
Thread.currentThread().interrupt();
// thread=null;
iflg=0;
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
相關文章
- java 多執行緒之使用 interrupt 停止執行緒的幾種方法Java執行緒
- Thread執行緒終止interruptthread執行緒
- 【雜談】執行緒中斷——Interrupt執行緒
- Java多執行緒/併發08、中斷執行緒 interrupt()Java執行緒
- Java的Interrupt與執行緒中斷Java執行緒
- 執行緒中斷方法interrupt() 與 cancel()執行緒
- Android多執行緒之執行緒池Android執行緒
- 【轉】理解java執行緒的中斷(interrupt)Java執行緒
- Android執行緒管理之ExecutorService執行緒池Android執行緒
- python中單執行緒重複利用Python執行緒
- Android 執行緒優化之執行緒池shutdown方法Android執行緒優化
- java多執行緒之執行緒的基本使用Java執行緒
- java執行緒之守護執行緒和使用者執行緒Java執行緒
- Android多執行緒之IntentServiceAndroid執行緒Intent
- Android執行緒管理之Thread使用總結Android執行緒thread
- Android執行緒管理之ThreadPoolExecutor自定義執行緒池Android執行緒thread
- Java 執行緒中斷(interrupt)與阻塞 (park)的區別Java執行緒
- Thread interrupt() 執行緒中斷的詳細說明thread執行緒
- Android複習之旅--子執行緒更新UIAndroid執行緒UI
- Android中執行緒的使用Android執行緒
- 多執行緒-執行緒控制之休眠執行緒執行緒
- 多執行緒-執行緒控制之加入執行緒執行緒
- 多執行緒-執行緒控制之禮讓執行緒執行緒
- java基礎:執行緒方法之interrupt和sleepJava執行緒
- 執行緒控制之休眠執行緒執行緒
- 多執行緒-執行緒控制之守護執行緒執行緒
- 多執行緒複習執行緒
- Android的執行緒和執行緒池Android執行緒
- Android執行緒池使用介紹Android執行緒
- Android 效能最佳化之執行緒Android執行緒
- 二. 執行緒管理之執行緒池執行緒
- Java多執行緒之執行緒中止Java執行緒
- 多執行緒系列之 執行緒安全執行緒
- iOS 多執行緒之執行緒安全iOS執行緒
- iOS多執行緒之執行緒安全iOS執行緒
- android 主執行緒和子執行緒之間的訊息傳遞Android執行緒
- Android程式框架:執行緒與執行緒池Android框架執行緒
- Android執行緒篇(二)Java執行緒池Android執行緒Java