public abstract class StoppableRunnable implements Runnable {
private volatile boolean mIsStopped = false;
public abstract void stoppableRun();
public void run() {
setStopped(false);
while(!mIsStopped) {
stoppableRun();
stop();
}
}
public boolean isStopped() {
return mIsStopped;
}
private void setStopped(boolean isStop) {
if (mIsStopped != isStop)
mIsStopped = isStop;
}
public void stop() {
setStopped(true);
}
}
クラス......
private Handler mHandler = new Handler();
public void onStopThread() {
mTask.stop();
mHandler.removeCallbacks(mTask);
}
public void onStartThread(long delayMillis) {
mHandler.postDelayed(mTask, delayMillis);
}
private StoppableRunnable mTask = new StoppableRunnable() {
public void stoppableRun() {
.....
onStartThread(1000);
}
}
};
ありがとうございます。私はAPIよりも多くの制御が必要なので、今回は使用しません。ありがとう。 –
Executors.newSingleThreadExecutor()は、タイプThreadPoolExecutorではありません。 –
'longRunningTask'にタスクのリストが含まれている場合、どのように特定のタスクの実行を中止できますか?スレッドが同時に実行されている可能性があります。 – Stallman