Ожидание нескольких событий в одном потоке на Java - PullRequest
0 голосов
/ 30 ноября 2018

Я новичок в многопоточности и работаю над заданием по этой теме.

У меня есть поток, который отправляет события в другой поток в соответствии с расписанием.Отправка события возвращает мне псевдо-будущий объект (тот, который я должен был реализовать сам).После разрешения объекта Future я должен предпринять действие.Однако я не должен ждать этого, так как я должен проснуться вовремя и отправить каждое событие вовремя.Порядок завершения событий также неизвестен.

Что я могу сделать, чтобы реагировать на каждый Future ответ вовремя, И отправлять события вовремя (согласно расписанию)?

Спасибо.

Частичная реализация будущего:

public class Future<T> {

private T result;
boolean IsDone;

/**
 * This should be the the only public constructor in this class.
 */
public Future();

public T get();
public T get(long timeout, TimeUnit unit);

public void resolve (T result) {
    this.result=result;
    IsDone=true;
}

/**
 * @return true if this object has been resolved, false otherwise
 */
public boolean isDone() {
    return IsDone;
}

1 Ответ

0 голосов
/ 30 ноября 2018

Это классическая задача для асинхронного программирования.Вы можете решить это с помощью нескольких асинхронных вызовов процедур.Все эти вызовы могут быть выполнены на однопоточном исполнителе.

Так что вместо Future вы должны использовать обратный вызов, который является Runnable, отправляемым в пул потоков при получении ответа.Чтобы посылать сигналы своевременно, пусть ваш однопоточный исполнитель будет иметь тип ScheduledThreadPoolExecutor.

...