簡體   English   中英

在我的情況下,我應該使用線程池代替池嗎?

[英]Should I use Thread Pool instead pool in my situation?

我有簡單的塔防游戲。 每個怪物都在它自己的線程中移動,所以當新的波浪出現時,大約有20個新線程被完成(從10到25,隨機)。 我記得像執行器類這樣的東西,它在有很多短壽命線程的情況下很有用。 就像我一樣。 所以我的問題是:

  1. 我應該使用線程池,它會增加多少性能?
  2. 我該如何實施呢? 池應該是一個領域嗎?

我會為每個怪物設置一個move()方法並定期調用它。 這樣你只有一個線程,它應該執行得很好。 BTW如果你願意,一個線程可以使用ExecutorService。

我認為可以安全地假設波之間的間隔超過一秒,不是嗎? 否則,你的游戲將很難被擊敗。 ;-)

如果你產生如此少的線程(15-25個線程不是什么大問題),我不希望使用線程池會產生影響。 就個人而言,我只會使用new Thread 您可以隨時切換到ExecutorService ,但我不認為您的方案中需要它。

編寫時,線程池是合理的,例如,必須處理數百個傳入請求的Web服務器(假設每個請求都應在單獨的線程中處理)。 然后線程池可能會提高性能,但其最重要的優點是它是一種限制資源使用的便捷方式。

為什么? 如果您只是在每個請求上生成一個新線程,那么如果同時有多個請求,您將很快就會耗盡資源。 使用具有線程上限的線程池可防止發生這種情況。

(但是,在不了解應用程序的詳細信息的情況下,從純粹的設計角度來看,完全避免線程並將所有游戲邏輯保留在一個線程中絕對是您應該考慮的事情。它會使事情變得更簡單。但是,我再說一遍有詳細信息。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM