在干扰器处理程序线程开始时运行任务

问题描述

我正在使用 LMAX 干扰器,效果很好。

我想在干扰器的线程生命周期开始时执行一些核心关联代码(需要在干扰器处理程序的线程上运行)。

我尝试覆盖干扰器中的 start 方法,但是这段代码仍然在执行线程而不是干扰器线程上运行,如下所示:

ThreadFactory factory = new ThreadFactoryBuilder().setNameFormat("disruptorThread").build();
disruptor<OrderBasedEventHolder> disruptor = new disruptor<>(new disruptor<Holder> disruptor = new disruptor<Holder>(new HolderFactory(),(int) Math.pow(2,bufferExp),factory,pType,waitStrategy) {
        @Override public RingBuffer<OrderBasedEventHolder> start() {
            // Initialization code

            return super.start();
        }
    };
disruptor.start();

如何重写ThreadFactory创建的线程的run()方法

谢谢!!!

解决方法

我以前通过在任何其他条目之前加入一个初始条目(具有特殊类型)并为这个初始“开始”条目添加处理代码来解决这个问题。