Попросите ваш пул потоков завершить работу, getQueue, для каждого результата в отдельные Runnables, удалить каждый Runnable, используя метод remove. В зависимости от типа очереди, вы можете остановить удаление на ранней стадии на основе возвращаемых значений.
По сути, это захват очереди и ее очистка, только очистка с помощью методов, которые работают. Вместо того, чтобы вручную запоминать все представления, вы используете тот факт, что пул потоков уже должен запомнить все представления. Однако вам, вероятно, нужно будет сделать защитную копию очереди, поскольку я думаю, что это живое представление, и поэтому удаление, вероятно, вызовет исключение одновременной модификации, если вы выполняли итерацию / для каждого для живого представления.
Самый простой способ - это, вероятно, зарегистрировать собственный DataBinder для возможных форматов даты.
import java.beans.PropertyEditorSupport;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class CustomDateBinder extends PropertyEditorSupport {
private final List<String> formats;
public CustomDateBinder(List formats) {
List<String> formatList = new ArrayList<String>(formats.size());
for (Object format : formats) {
formatList.add(format.toString()); // Force String values (eg. for GStrings)
}
this.formats = Collections.unmodifiableList(formatList);
}
@Override
public void setAsText(String s) throws IllegalArgumentException {
if (s != null)
for (String format : formats) {
// Need to create the SimpleDateFormat every time, since it's not thead-safe
SimpleDateFormat df = new SimpleDateFormat(format);
try {
setValue(df.parse(s));
return;
} catch (ParseException e) {
// Ignore
}
}
}
}
Вам также потребуется реализовать PropertyEditorRegistrar
import org.springframework.beans.PropertyEditorRegistrar;
import org.springframework.beans.PropertyEditorRegistry;
import grails.util.GrailsConfig;
import java.util.Date;
import java.util.List;
public class CustomEditorRegistrar implements PropertyEditorRegistrar {
public void registerCustomEditors(PropertyEditorRegistry reg) {
reg.registerCustomEditor(Date.class, new CustomDateBinder(GrailsConfig.get("grails.date.formats", List.class)));
}
}
и создать определение Spring-bean в вашем grails-app / conf / spring / resources.groovy :
beans = {
"customEditorRegistrar"(CustomEditorRegistrar)
}
и, наконец, определите форматы даты в вашем grails-app / conf / Config.groovy:
grails.date.formats = ["yyyy-MM-dd HH:mm:ss.SSS ZZZZ", "dd.MM.yyyy HH:mm:ss"]