好的,这可能是一个非常大的问题。
我有一项服务(例如通知程序),并且该服务的一种方法 [例如 notifyTransaction(Transaction trans) ] 可远程用于回调。
现在还有其他服务说(transactionsReader),它不断读取传入的事务并调用通知程序的远程方法,即notifyTransaction(Transaction trans).
现在向您解释这个问题,我想补充一点,我的交易包含多个操作。对于治疗手术,我有一个功能说processOperation(Operation op).
这processOperation(Operation op)
实际上对数据库进行了一些更新。
有什么问题 ?服务 transactionsReader 正在以非常快的速度读取传入的事务,并notifyTransactions()
以比方法处理操作的速度快得多的速度调用事务processOperation(Operation op)
。
我想做的事 ?我想使用 multithreadintnotifyTransactions()
以便我有多个线程来处理每个事务。
为了开始,我
ExecutorService executor = Executors.newFixedThreadPool(2);
在方法中使用notifyTransactions()
并创建了我的方法 processOperation(Operation op) 的任务。但这会为每次调用创建一个不同的池,notifyTransactions()
所以我在几秒钟内就有了大约 3000 个池。最后它内存不足。
还有什么其他可能的解决方案?
提前致谢 :)