我的应用程序中有一个简单的多线程事件代理,它公开了两个方法和一个接口:
interface IEventHandler extends Runnable
{
public setEvent(Event e);
}
public <T extends Event> void Subscribe(Class<T> eventType, IEventHandler handler);
public <T extends Event> Publish(T event);
发布查找适当的处理程序,设置事件,并生成一个线程来运行它:
IEventHandler handler = findHandlerForTheEventType();
handler.setEvent(event);
new Thread(handler);
我担心的事情(这还没有发生,但我很确定可能会发生)同时发生同一事件,而且事件处理程序会被{{1}打扰在跑步中间。有没有一些设计模式可以解决这个问题?