java - 在 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;
}
解决方案
这是异步编程的经典任务。您可以通过多个异步过程调用来解决它。然后,所有调用都可以在单线程执行程序上运行。
因此,您应该使用回调而不是 Future,它是在收到回复时提交到线程池的 Runnable。为了及时发送信号,让你的单线程执行器是 ScheduledThreadPoolExecutor 类型。
推荐阅读
- arrays - 从 JSON 对象数组构建 XML
- c - 如何在 C 中正确使用带字符的 OR 函数?
- ruby - Ruby Gem Sequel - 如何仅显示计数值 > 1 的分组
- mysql - 在 JPA 中找不到实体实体类实例变量的属性
- python - Google 学者通过 AWS ApiGateway 使用 ip-rotator 抓取
- r - 对多个任意过滤条件使用 tidy eval
- angular - Angular 中的 mat-list 不显示任何名称
- laravel - 基于 Laravel 迁移文件通过 API 创建数据库
- c# - OnActionExecuting 线程安全吗?
- scala - 如何将包含参数的案例类与通用类型匹配