08-17 18:26:44.540: E/AndroidRuntime(2405): FATAL EXCEPTION: Scheduler
08-17 18:26:44.540: E/AndroidRuntime(2405): java.lang.IllegalThreadStateException: Thread already started.
08-17 18:26:44.540: E/AndroidRuntime(2405): at java.lang.Thread.start(Thread.java:1045)
08-17 18:26:44.540: E/AndroidRuntime(2405): at com.example.simpledownloader.scheduler.Scheduler.run(Scheduler.java:21)
08-17 18:26:44.540: E/AndroidRuntime(2405): at java.util.Timer$TimerImpl.run(Timer.java:284)
따라서, 짐작중인 모든 다운로드를 무차별 공격으로 검사하는 TimerTask
이 있습니다.
다운로드는 Vector
에 저장된 Thread
입니다. TimerTask
에서 스레드가 준비되면 즉시 start()
이 호출됩니다.TimerTask에서이 오류가 발생하는 이유는 무엇입니까?
코드 :
package com.example.simpledownloader.scheduler;
import java.util.TimerTask;
import android.util.Log;
import com.example.simpledownloader.sharable.Sharable;
import com.example.simpledownloader.task.Task;
public class Scheduler extends TimerTask {
//------------------------------------------------------------------------------
@Override
public void run() {
if(Sharable.getShouldLook()){ // Should we look for pending tasks ?
for(Task each: Sharable.downloads){ // Yes, then loop
if(each.isAlive()==false){ // Thread is not running ?
Log.v("SCHEDULER", "NOT RUNNING");
if(each.getReadiness() == true){ // Is it ready ?
each.start(); // Start !
break; // stop looping
}
}
}
}
}
//------------------------------------------------------------------------------
}
왜 내가 그 오류가 계속 않습니다 여기에 코드?
Timer
이 같은 설정 : 당신이 만약 isAlive()
false를 반환 스레드를 시작하기 전에
Sharable.schedulerTimer.scheduleAtFixedRate(Sharable.schedulerTask, 1000, 1000); // start scheduler
* Sharable * 클래스는 여러 활동에서 공유되는 모든 싱글 톤 인스턴스를 보유합니다. –
실 죽은 후에는 다시 시작할 수 없습니다. – aim
@aim 중단 된 후에 의미합니까? –