public static Map<String, Object> getPoolInfo(EventLoopGroup executors) { Map<String, Object> info = new HashMap<>(3); int poolSize = 0, queueSize = 0, activeCount = 0; for (EventExecutor e : executors) { poolSize++; if (e instanceof SingleThreadEventLoop) { SingleThreadEventLoop executor = (SingleThreadEventLoop) e; queueSize += executor.pendingTasks(); ThreadProperties tp = executor.threadProperties(); if (tp.state() == Thread.State.RUNNABLE) { activeCount++; } } } info.put("poolSize(workThread)", poolSize); info.put("activeCount(workingThread)", activeCount); info.put("queueSize(blockedTask)", queueSize); return info; }
@Override protected boolean isCompatible(EventLoop loop) { return loop instanceof SingleThreadEventLoop; }