【发布时间】:2011-12-07 09:14:37
【问题描述】:
我正在尝试将异步输出添加到我的程序中。
目前,我有一个 eventManager 类,它在主循环中当前存在的任何可移动对象的位置的每一帧都得到通知(它正在渲染一个场景;一些对象在帧之间变化,其他对象是静态的并且存在于每一帧)。我希望记录每一帧的状态,以便添加回放场景的功能。
这意味着我需要逐帧存储变化的信息,并将其保存在内存中或写入磁盘以供以后检索和解析。
我做了一些计时实验,将每个对象的状态记录到内存中,每帧的时间增加了大约 25%(更不用说最终达到内存限制的可能性)。将每一帧直接写入磁盘需要(可以预见的)更长的时间,几乎是完全不记录帧的两倍。
不用说,我想实现多线程,这样我就不会在我的主渲染循环中每秒丢失帧,因为该进程会不断地写入磁盘。
我想知道是否可以为此任务使用常规队列,或者我是否需要更专用的东西,例如 this question 中讨论的队列。
在我的情况下,只有一个生产者(主线程)和一个消费者(我想异步写入磁盘的线程)。生产者永远不会从队列中移除,消费者也永远不会添加到队列中——所以我需要一个专门的队列吗?
使用更专业的队列是否有优势无论如何?
【问题讨论】:
标签: java multithreading queue