问题描述
我正在使用 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()方法?
谢谢!!!
解决方法
我以前通过在任何其他条目之前加入一个初始条目(具有特殊类型)并为这个初始“开始”条目添加处理代码来解决这个问题。