public class MultiReactor {
private Reactor mainReactor;
private Reactor[] subReactors;
private int next = 0;
public MultiReactor(int subReactorCount) {
mainReactor = new Reactor();
subReactors = new Reactor[subReactorCount];
for (int i = 0; i < subReactorCount; i++) {
subReactors[i] = new Reactor();
}
}
public void start() throws IOException {
mainReactor.registerAccept(serverChannel, (channel) -> {
Reactor subReactor = subReactors[next++ % subReactors.length];
subReactor.register(channel);
});
new Thread(mainReactor).start();
for (Reactor subReactor : subReactors) {
new Thread(subReactor).start();
}
}
}
优点:充分利用多核,高并发性能最佳
缺点:实现复杂,需要负载均衡