首页 > 解决方案 > 在 Java 上的一个线程中等待多个事件

问题描述

我是多线程的新手,并且正在处理有关此主题的任务。

我有一个线程,根据定时计划将事件发送到另一个线程。发送事件会返回一个伪未来对象(我必须自己实现)。解决问题后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;
}

标签: javamultithreadingwaitfuture

解决方案


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

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


推荐阅读