好吧,这可能是一个非常大的问题。多线程同时回调函数
我有一个服务(说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
是。但是他每次调用线程池都犯了一个很大的错误。正如你所说的那样,它只需要像这样调用一次。 –