【发布时间】:2019-08-08 06:59:01
【问题描述】:
我在我的 java 服务器组件中使用 Oracle 的 Coherence 缓存。 我正在使用以下事件处理程序订阅和收听缓存更改事件:
public void entryUpdated(MapEvent mapEvent)
{
processUpdateEvent(mapEvent);
}
public void entryDeleted(MapEvent mapEvent)
{
//processDeleteEvent(mapEvent);
}
public void entryInserted(MapEvent mapEvent)
{
processInsertEvent(mapEvent);
}
有时,我们会在缓存中获得大量“更新”事件流(“删除”或“插入”事件的数量非常少)...看来我们当前的 Java 代码的可扩展性不够来处理这种情况。因此,它在事件处理方面落后了。
我正在尝试重新设计和优化这段代码。
我想到的一件事是使用以下方法。但我认为这没有意义,因为它会为每个新事件启动新线程,这将再次降低服务器的整体性能。 请问有没有其他方法可以优化这段代码?
Thread thread = new Thread(new Runnable() {
public void run() {
processUpdateEvent();
}
});
thread.start();
谢谢。
【问题讨论】:
-
到底是什么问题?处理更新事件需要太多时间?
-
是的,似乎在“事件 1”处理完成时,事件 2/3/4.. 已经到达,这造成了延迟。谢谢。
-
您可以尝试使用具有预定义运行线程数的线程池来并行处理您的事件(如果可能的话)。
-
为什么 processUpdateEvent();和 processInsertEvent();在没有参数“mapEvent”的情况下调用?他们如何知道更新/插入了哪些项目?
-
我的错..现在更新了问题..
标签: java multithreading events oracle-coherence