多个侦听器可以使用相同的代码吗?

问题描述:

我计划有一个经纪人主题,并有多个默认消息侦听器或简单的消息侦听器。所有的监听者都执行相同的代码。多个侦听器可以使用相同的代码吗?

  1. 是否每个侦听器代码执行独立于另一个侦听器。我想问的是,如果访问相同方法时听众之间会有冲突吗?

我有点像多线程执行一样工作。 我正在使用JMS和activemq作为代理。

需要了解的一些代码: 每个侦听器都会调用这个方法来发送事件的“事件处理”。该方法将依次调用其他方法。句柄方法将依次调用其他方法。

private void eventProcessing(final Event Event){ 
     try { 
       if(Event.isDatafileTransaction()){ 
       final EventDatafileTransaction datafileTransaction = Event.getDatafileTransaction(); 

          final List<Events> transactions = getDatafileTransactions(datafileTransaction); 
          final List<AcEventRecordOperation> recordOperations = getTransactionsAsListOfRecordOperations(datafileTransaction, transactions); 

          if (recordOperations != null && recordOperations.size() > 0) { 

            recordOperationListener.handle(recordOperations); 

         } 

       } 
     } catch (Throwable t) { 

     } 

    } 
+0

没有更详细的代码片段很难说,但基本的多线程和并发性仍然适用于你。 因此,假设eventProcessing方法在一个类上并且被多个侦听器调用,并且由每个侦听器传入的Event对象对于各个侦听器都是唯一的,我认为您在这里非常安全 –

您的监听器必须是线程安全的 - 没有字段(类级变量),或者它们必须通过同步进行保护。