ExecutorService-подобный класс, где пользователь контролирует при вызове Callables
Я использовал ExecutorService для планирования задач, которые будут выполняться в будущем. Увидев какое-то "странное" поведение, когда мой Callable выполнялся до того, как я вызвал get() для объекта Future, возвращенного при отправке моего Callable в пул ExecutorService, я прочитал некоторую документацию и обнаружил, что отправленная задача будет выполнена между тем временем отправляется или не позднее, когда get() вызывается для объекта Future.
Мой вопрос - есть ли какой-нибудь класс, который позволял бы отправлять Callables ему и выполнять ТОЛЬКО при вызове get()? На данный момент кажется, что я сам управляю Callables и сам вызываю call(), когда я готов к их выполнению, кажется, что он выполнил бы то, что я хочу, но я хотел убедиться, что службы уже нет реализовано, что достигло этого.
Короче говоря, есть ли альтернатива ExecutorService, которая позволяет мне контролировать, когда вызываются Callables, представленные в него? Примечание. Время, в которое я хочу, чтобы они вызывались, является переменным и не определяется, так как я могу решить не вызывать их, поэтому пул ScheduledExecutorService здесь не будет работать.
Большое спасибо!
1 ответ
Похоже, вы действительно хотите использовать Queue<Callable>
вместо этого и просто опросить очередь для задач.
Таким образом, вы можете отправлять столько задач, сколько хотите, и выполнять их по своему желанию - одну за другой.