如果没有
ProcessBuilder别人的建议,怎么办呢?
我有三个类-
PingParallel是我的主类,
PingTask是每个线程执行的任务,并且
PingResult有结果代码(我们还可以添加一些其他信息,状态消息等)。
平平行
package com.test.thread;import java.util.ArrayList;import java.util.Date;import java.util.List;import java.util.concurrent.Callable;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future;public class PingParallel { public static void main(String[] args) { int totalIps = 89; ExecutorService executor = Executors.newFixedThreadPool(totalIps); List<Future<PingResult>> list = new ArrayList<Future<PingResult>>(); Callable<PingResult> callable = null; for(int i=0; i< totalIps; i++){ callable = new PingTask("127.0.0"+i); // Get the ipAddres buttons[i].getText()); Future<PingResult> future = executor.submit(callable); list.add(future); } for(Future<PingResult> fut : list){ try { System.out.println(new Date()+ "::"+fut.get()); } catch (Exception e) { e.printStackTrace(); } } executor.shutdown(); }}
PingTask
package com.test.thread;import java.net.InetAddress;import java.util.concurrent.Callable;public class PingTask implements Callable<PingResult> { private String ipAddress; public PingTask(String ipAddress) { this.ipAddress = ipAddress; } @Override public PingResult call() { InetAddress inet = null; try { inet = InetAddress.getByName(ipAddress); int resultCode = inet.isReachable(5000) ? 0 : -1; return new PingResult(ipAddress, resultCode); } catch (Exception e) { e.printStackTrace(); return new PingResult(ipAddress, -1); } }}
PingResult
package com.test.thread;public class PingResult { private String ipAddress; private int resultCode; public PingResult(String ipAddress, int resultCode) { this.ipAddress = ipAddress; this.resultCode = resultCode; } public String getIpAddress() { return ipAddress; } public int getResultCode() { return resultCode; } public String toString() { return "IpAddress :: "+ ipAddress + " Result Code : "+ resultCode; }}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)