package fm.liu.timo.manager.response; import java.util.ArrayList; import fm.liu.timo.TimoServer; import fm.liu.timo.manager.handler.ShowHandler; import fm.liu.timo.manager.response.ResponseUtil.Head; import fm.liu.timo.net.NIOProcessor; import fm.liu.timo.util.NameableExecutor; /** * @author liuhuanting */ public class ShowThread extends ShowHandler { private static final ArrayList<Head> heads = new ArrayList<>(); static { heads.add(new Head("name")); heads.add(new Head("size")); heads.add(new Head("active_size")); heads.add(new Head("task_queue_size")); heads.add(new Head("completed_count")); heads.add(new Head("total_count")); } @Override public String getInfo() { return "show the status of thread pool"; } @Override public ArrayList<Head> getHeads() { return heads; } @Override public ArrayList<Object[]> getRows() { ArrayList<Object[]> rows = new ArrayList<>(); TimoServer server = TimoServer.getInstance(); for (NIOProcessor processor : server.getProcessors()) { NameableExecutor executor = (NameableExecutor) processor.getExecutor(); if (executor != null) { Object[] row = new Object[heads.size()]; int i = 0; row[i++] = executor.getName(); row[i++] = executor.getPoolSize(); row[i++] = executor.getActiveCount(); row[i++] = executor.getQueue().size(); row[i++] = executor.getCompletedTaskCount(); row[i++] = executor.getTaskCount(); rows.add(row); } } return rows; } }