我想添加異步輸出到我的程序。在Java中使用多線程時,常規隊列是否不適合使用?
目前,我有一個eventManager類,獲取每個幀的當前存在於主循環中的任何可移動對象的位置(它渲染一個場景;一些對象隨幀變化,其他對象是靜態的並存在在每一幀)。我正在尋找記錄每個幀的狀態,以便我可以添加功能來重放場景。
這意味着我需要在不同幀之間存儲不斷變化的信息,並將其保存在內存中或將其寫入磁盤供以後檢索和解析。我已經做了一些時間實驗,將每個對象的狀態記錄到內存中,每幀的時間增加了約25%(更不用說最終達到內存限制的可能性)。直接將每個幀寫入磁盤需要(可預測)甚至更長,接近兩倍於根本不記錄幀。
不用說,我想實現多線程,這樣我就不會在我的主渲染循環中丟失幀數,因爲這個過程一直在寫入磁盤。
我不知道它是否是好使用常規隊列此任務,或者如果我需要更多的東西專用像this question討論的隊列。
在我的情況下,只有一個生產者(主線程)和一個消費者(我想要異步寫入磁盤的線程)。生產者永遠不會從隊列中移除,而且消費者永遠不會加入 - 所以我需要一個專門的隊列嗎?
反正使用更專門的隊列有沒有優勢?
啊是的,每@Tim,LinkedBlockingQueue是唯一的。 'BlockingQueue'是'LinkedBlockingQueue'實現的接口。 – andronikus