在Java的一个线程中等待多个事件

时间:2018-11-29 21:03:17

标签: java multithreading wait future

我是多线程技术的新手,正在从事与此主题相关的作业。

我有一个线程,它根据定时时间表将事件发送到另一个线程。发送事件后,我得到了一个伪未来对象(我必须自己实现)。解决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 :(得分:0)

这是异步编程的经典任务。您可以使用多个异步过程调用来解决它。然后,所有这些调用都可以在单个线程执行器上运行。

因此,您应该使用回调,而不是Future,它是在收到答复时提交给线程池的Runnable。 要及时发送信号,请让您的单线程执行器的类型为ScheduledThreadPoolExecutor。