在我的應用程序中,我有一組插件 - 在應用程序中發生某些事件時執行一些小操作的類。插件的每個方法都必須在單獨的線程中調用,但每個插件只能同時運行一個方法。我們應該使用自己的線程還是線程池來處理小而頻繁的任務?
我可以實現這個使用兩種方法:
爲每個插件將處理來自插件的隊列中的事件,直到隊列爲空創建一個線程。然後睡覺,直到新事件排隊,處理它等等。
當事件來到插件的隊列時,它在線程池線程中進行處理。當隊列變空時,將其釋放回線程池。
問題是:這兩種方式的優缺點是什麼?
一些澄清:
- 插件不加載CPU太多,大部分時間他們只是等待下一個事件。
- 我不在乎創建線程所需的時間,插件是長期生活的。
- 通常我有〜10-20個這樣的插件,每個應用程序。
「儘管每個插件只能同時運行一種方法」 - 您是否認爲對於給定的插件,您不能同時調用兩種方法?但是,如果你有單獨的插件,你可以同時在這些不同的插件上執行方法? – RandomEngy 2012-03-08 22:41:14
是的,正是...... – 2012-03-09 21:30:42