//..
if (!(o instanceof A) {
return false;
}
if (!(o instanceof B)) {
return this.equals(o);
}
//..
There is no way to extend an instantiable class and add a value component while preserving the equals contract
Type superClass = getClass().getGenericSuperclass();
...
private static final Pattern NUMBER = Pattern.compile("[0-9]+");
...
private boolean isNumber(String src) {
return NUMBER.matcher(src).matches();
}
ConcurrentMap<String, FutureTask<T>>
в моем видении это taskId -> task. Чтобы же контролировать "длительные процедуры" можно заюзать ExecutorService со своим ThreadFactory которая продьюсит демон триды, которые можно, если так хочется, убивать по таймауту. Ну и понятно что "статус", "запуск таска" и тд реализовать на уровне сервиса.