项目中有监控各个节点的状态。其中监控网络连接情况的时候,需要每个节点都ping一次。如果用单线程每个挨着ping,那么耗费的时间量是巨大的。
此时就要想到并发的思想。用多个线程并发的去ping。
而且,ping命令是有很到参数可以使用的。本人在win下使用,截图如下:
其中,-w命令是指定等待回复的超时时间。这里参数是毫秒。默认等待回复超时时间是1秒钟。可以设置指定的超时时间。
--------------------------上面是ping的准备知识。下面是线程池----------------------------
可以使用java开源的线程池来做这个任务。
Java里面线程池的顶级接口是Executor,但是严格意义上讲Executor并不是一个线程池,而只是一个执行线程的工具。真正的线程池接口是ExecutorService。
class CheckerTask_concurrent extends TimerTask {
public void run() {
// 参数地址
try {
ExecuteCommand executeCommand = new ExecuteCommand();
TerminalService ts = new TerminalService();
Terminal terminal = new Terminal();
// 读取所有的终端信息
List<Terminal> list = ts.getAllTerminal();
// 检查终端状态
System.out.println(new Date());
ExecutorService pool = Executors.newF