У меня есть класс A
, который получает различные независимые задачи (каждая из которых расширяет абстрактный класс B
, который реализует Callable) от слушателя, и назначает один поток для каждой задачи. Я хотел бы знать, есть лиСуществуют шаблоны, которые могут использовать результаты этих задач без блокировки потока класса A
, например, что происходит при использовании submit()
с Future.get()
.
Результат, который я ищу, может быть достигнутдобавив к задаче гипотетический потребительский код;тем не менее, в обозримом будущем код, который я хочу выполнить, будет идентичен, и по мере того, как я буду выполнять больше задач, мой мозг обезьяны, скорее всего, забудет много добавлять код.
Мое настоящее лучшее потенциальное решение -просто чтобы класс B
реализовал Runnable, поместил потребительский код в run()
и код задачи в другой метод и передал параметры задаче через ее конструктор, который затем сохраняет их как переменные класса, которые будут использоваться при вызове.Однако для этого шаблона требуются дополнительные конструкторы и некоторые переменные класса, которые действительно должны быть только локальными переменными.Кроме того, при использовании этого метода я столкнулся с другими проблемами, такими как исключения NoSuchMethod при копировании задач (я использую .getClass().getConstructor(sth.class, sthelse.class).newInstance(sth, sthelse)
), даже если я создал конструктор.
Поэтому мне интересно, есть ли какие-либо другиеопции.