A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 吴硕 中级黑马   /  2013-3-1 22:11  /  1350 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 吴硕 于 2013-3-2 11:22 编辑

我写了下面的代码,怎么对话框有时候会弹出来,有时候不会弹出来,大多数时候都不会弹出来,请帮忙指出问题,十分感谢!!

在代码的107行出现的问题

----------------------------------------------------------------
问题解决了,把showMessage()方法变成同步方法就好了,可能是发生了死锁
  1. import java.net.InetAddress;
  2. import java.net.UnknownHostException;
  3. import javax.swing.JOptionPane;
  4. /**

  5. */

  6. class OnlineTime
  7. {
  8.     static long startTime = 0;    //初始时间
  9.     static long lastTime = 0;    //最后时间
  10.     static long allTime = 0;    //上网总时间

  11.     static long stopTime = 60000;    //毫秒,(4个小时14400000毫秒)

  12.     static long delayTime = 5000;    //毫秒
  13.    
  14.     /*main方法*/
  15.     public static void main(String[] args) throws Exception
  16.     {
  17.         while(true)
  18.         {
  19.             startTime = getStartTime();
  20.             
  21.             while(true)
  22.             {
  23.                 if(isConn())
  24.                 {
  25.                     lastTime = System.currentTimeMillis();

  26.                     long tempTime = getAllTime();

  27.                     System.out.println(tempTime);

  28.                     //如果联网时间超过设定的时间
  29.                     if(tempTime > stopTime)
  30.                     {
  31.                         showMessage();
  32.                         //在设定时间的基础上增加一小时(3600000毫秒)
  33.                         stopTime += 60000;
  34.                     }
  35.                     else
  36.                     {
  37.                         Thread.sleep(delayTime);
  38.                     }
  39.                 }
  40.                 else
  41.                 {
  42.                     System.out.println("断网了");
  43.                     break;
  44.                 }
  45.             }
  46.             
  47.             //把上一次上网时间加入总时间中
  48.             allTime = allTime + (lastTime - startTime);
  49.         }
  50.     }

  51.     //判断现在是否连上网
  52.     public static boolean isConn()
  53.     {
  54.         InetAddress ip = null;

  55.         try
  56.         {
  57.             //获取腾讯主机的InetAddress对象
  58.             ip = InetAddress.getByName("www.soso.com");
  59.         }
  60.         catch(UnknownHostException e)
  61.         {
  62.             
  63.         }
  64.         
  65.         if(ip == null)
  66.         {
  67.             return false;
  68.         }
  69.         return true;
  70.     }

  71.     //获取联网时间
  72.     public static long getStartTime() throws Exception
  73.     {
  74.         while(true)
  75.         {
  76.             if(isConn())
  77.             {
  78.                 return System.currentTimeMillis();
  79.             }
  80.             Thread.sleep(delayTime);
  81.         }
  82.     }

  83.     //显示提示信息
  84.     public static void showMessage()
  85.     {
  86.         System.out.println("aaaaaaaaaaaa");
  87.         long tempTime = getAllTime();
  88.         
  89.         if(tempTime >= 60000 && tempTime < 3600000)
  90.         {
  91.             System.out.println("bbbbbbbbbbbb");
  92.             long num = tempTime/1000/60;
  93.             System.out.println("cccccccccc");
  94.             String msg = "                    上网时间已超过"+ num + "分钟";
  95.             System.out.println("ddddddddd");
  96.             JOptionPane.showMessageDialog(null, msg , "上网时间监控", JOptionPane.DEFAULT_OPTION);    //①
  97.             System.out.println("eeeeeeeeeeeee");
  98.         }
  99.         else if(tempTime >= 3600000 && tempTime < 86400000)
  100.         {
  101.             long num = tempTime/1000/60/60;
  102.             String msg = "                    上网时间已超过"+ num + "小时";
  103.             JOptionPane.showMessageDialog(null, msg , "上网时间监控", JOptionPane.DEFAULT_OPTION);
  104.         }
  105.     }

  106.     //临时获取当前时刻的联网总时间
  107.     public static long getAllTime()
  108.     {
  109.         return allTime + (lastTime - startTime);
  110.     }

  111. }
复制代码

1 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马