public class TestTimeTask extends TimerTask{ private boolean canLogin=true;//如果canLogin的值为false,则触发报警方法,所以初始化设为true; private boolean canPing=true;//是否能够ping通服务器的返回值 private int couter=0;//如果ping不通,则计数器加1 private TextPing failHandle=new TextPing();//假设这个类我已经写好了,这个是测试ping服务器的类 public void run() { canPing=failHandle.canReach();//测试是否能够ping通服务器 if(!canLogin)//如果ping不通,计数器加1;但是在连续的三次ping中,又一个ping通的话,计数器couter=0,如何实现??? couter++; }
public void run() { canPing = failHandle.canReach(); if (canPing) { counter = 0; } else { if (++counter >= 3) { canLogin = false; } } }
public class TestTimerTask extends TimerTask { private int counter = 0; private TextPing failHandle = new TextPing(); public void run() { if (!failHandle.canReach()) { if (counter == 2) { // 第三次ping不通->报警 } else { counter++;// 未达到3次加1 } } else { counter = 0; } } }
public class TestTimeTask extends TimerTask { private boolean canLogin = true; //如果canLogin的值为false,则触发报警方法,所以初始化设为true; private boolean canPing = true; //是否能够ping通服务器的返回值 private int couter = 0; //如果ping不通,则计数器加1 //private TextPing failHandle = new TextPing(); //假设这个类我已经写好了,这个是测试ping服务器的类 public void run() { for (int i = 0; i < 3; i++) { try { //canPing = failHandle.canReach();//测试是否能够ping通服务器 } catch (Exception e) { //异常.. } if (canPing) { //ping通了,couter计数归0 couter = 0; break; } else { //累计 couter++; } } if (couter == 3) { //3次没ping通,报警.. canLogin = false; //do someting.......? } } public static void main(String[] args) { //在程序初始化的时候。。。定时,找个地方放就可以 TestTimeTask task = new TestTimeTask(); Timer testTimer = new Timer("TestPingTimer"); // 5分钟 testTimer.schedule(task, new Date(), (long) (5 * 60 * 1000)); } }