好吧,這可能是一個非常大的問題。多線程同時回調函數
我有一個服務(說notifier)和方法[說notifyTransaction(Transaction trans)]這個服務遠程可用於回調。
現在還有其他服務說(transactionsReader),它一直讀取輸入的交易,並調用了通知的遠程方法是notifyTransaction(Transaction trans).
我們解釋一下你的問題,我想補充一點,我的交易包含更多比一個行動。而對於治療手術,我有一個功能說processOperation(Operation op).
processOperation(Operation op)
實際上做了一些數據庫更新。
最新問題? 服務TransactionsReader以非常快的速度讀取傳入的事務並以比processOperation(Operation op)
方法處理操作的速度快得多的速度調用notifyTransactions()
。
我想要做什麼? 我想在notifyTransactions()
中使用multithreadint,以便我有多個線程來處理每個事務。
開始我的方法notifyTransactions()
使用 ExecutorService executor = Executors.newFixedThreadPool(2);
和創建我的方法processOperation(操作OP)的任務。但是,這會爲每次撥打notifyTransactions()
創建一個不同的池,因此我在幾秒鐘內就會有大約3000個池。最後它失去了記憶。
什麼可能是其他可能的解決方案?
感謝提前:)
+1如果你要注入自己的阻塞隊列,那麼你應該實例化'ThreadPoolExceutor'直接:'新的ThreadPoolExecutor(來確定nthreads,來確定nthreads,0L,TimeUnit.MILLISECONDS,新的LinkedBlockingQueue(1000));' –
Gray
是。但是他每次調用線程池都犯了一個很大的錯誤。正如你所說的那樣,它只需要像這樣調用一次。 –