2012-11-28 131 views
0

在生產和消費應用程序中,讓我們假設生產佔用一個cpu週期並消耗3個avarage cpu週期。那麼我們如何設法保持同等數量的生產和消費邊界。這是我在研究線程時想象中的一個問題。如何管理CPU資源

如果你有任何想法用Java實現這個,請分享你的知識。

+1

你看過BlockingQueue了嗎? http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/BlockingQueue.html – jabal

+2

併發是一個複雜的主題,它不僅僅是一個CPU週期的問題,看看這個線程http ://stackoverflow.com/questions/13581575/system-not-scaling-to-support-concurrent-users/13583213#13583213我建議閱讀我在那裏推薦的書。 – codeghost

回答

3

您必須設計您的系統,以便您的消費者能夠長期跟上您的生產者。大多數生產商都是突發性的,如果你使用一個隊列,那麼在很短的時間內它們的生產速度比你消費的要快。如果不是這種情況,您可以

  • 有多個消費者。
  • 刪除或合併生成的消息以減少消費者的負載。
  • 推回生產者減慢。