Я проверял подобные вопросы. Этот очень похож на то, что я хочу спросить, но на самом деле у меня нет ответа.Также Этот вопрос Я проверил.
Вопрос, который у меня есть, заключается в том, что у меня есть SwingWorker
, который выполняет длинные процессы в фоновом режиме.
@Override
protected final List<Object> doInBackground() throws Exception
{
//Should I add if(this.isCancelled) here?
List<Object> objectList = someFecthingMethod();
//Should I add if(this.isCancelled) here?
objectList.forEach(object -> executor.submit(new Helper(object));
this.latch.await();
//Should I add if(this.isCancelled) here?
someOtherLongRunningMethodBasedOnHelperResults();
}
На пустом местеУ меня есть такой код.Это запускается, когда моя кнопка расчета запускает работника при нажатии.Я также хочу иметь возможность отменить это.Я написал необходимый метод stop()
, где у него есть cancel()
метод самого работника.
Как показано ниже в моем рабочем классе, у меня есть мой метод остановки, как показано ниже:
@Override
public boolean stop()
{
return this.cancel( true );
}
Когда я вызываю этот метод, я регистрирую doInBackground()
, this.isCancelled()
возвращает true.
.Но в любом случае он продолжает выполнять методы внутри doInBackground ().Поэтому мой вопрос заключается в том, стоит ли добавлять if(this.isCancelled())
проверку перед каждым методом в doInBackground()
, чтобы немедленно остановить его, есть ли лучший способ остановить его выполнение после его отмены?
Заранее спасибо.