例如在Java中我可以使用LMAX disruptor执行此操作:
Disruptor<NetworkEvent> disruptor = new Disruptor<>(NetworkEvent::new, 2048, Executors.newSingleThreadedExecutor());
在Kotlin中,我尝试了这个等价物:
val disruptor = Disruptor<NetworkEvent>({ NetworkEvent() }, 2048, Executors.newSingleThreadExecutor())
但我接受了这个错误:
答案 0 :(得分:3)
首先,你不需要指定T,kotlin可以推断它。
其次,错误消息显示错误, Disruptor需要一个EventFactory,但你传递一个简单的lambda。
如果要将lambda作为SAM接口传递,有时需要将lambda作为接口名称。
尝试以下(未经测试):
val disruptor = Disruptor(EventFactory { NetworkEvent()}, 2048,....)