黑马程序员技术交流社区
标题:
为什么对话框会弹不出来
[打印本页]
作者:
吴硕
时间:
2013-3-1 22:11
标题:
为什么对话框会弹不出来
本帖最后由 吴硕 于 2013-3-2 11:22 编辑
我写了下面的代码,怎么对话框有时候会弹出来,有时候不会弹出来,大多数时候都不会弹出来,请帮忙指出问题,十分感谢!!
在代码的107行出现的问题
----------------------------------------------------------------
问题解决了,把showMessage()方法变成同步方法就好了,可能是发生了死锁
import java.net.InetAddress;
import java.net.UnknownHostException;
import javax.swing.JOptionPane;
/**
*/
class OnlineTime
{
static long startTime = 0; //初始时间
static long lastTime = 0; //最后时间
static long allTime = 0; //上网总时间
static long stopTime = 60000; //毫秒,(4个小时14400000毫秒)
static long delayTime = 5000; //毫秒
/*main方法*/
public static void main(String[] args) throws Exception
{
while(true)
{
startTime = getStartTime();
while(true)
{
if(isConn())
{
lastTime = System.currentTimeMillis();
long tempTime = getAllTime();
System.out.println(tempTime);
//如果联网时间超过设定的时间
if(tempTime > stopTime)
{
showMessage();
//在设定时间的基础上增加一小时(3600000毫秒)
stopTime += 60000;
}
else
{
Thread.sleep(delayTime);
}
}
else
{
System.out.println("断网了");
break;
}
}
//把上一次上网时间加入总时间中
allTime = allTime + (lastTime - startTime);
}
}
//判断现在是否连上网
public static boolean isConn()
{
InetAddress ip = null;
try
{
//获取腾讯主机的InetAddress对象
ip = InetAddress.getByName("www.soso.com");
}
catch(UnknownHostException e)
{
}
if(ip == null)
{
return false;
}
return true;
}
//获取联网时间
public static long getStartTime() throws Exception
{
while(true)
{
if(isConn())
{
return System.currentTimeMillis();
}
Thread.sleep(delayTime);
}
}
//显示提示信息
public static void showMessage()
{
System.out.println("aaaaaaaaaaaa");
long tempTime = getAllTime();
if(tempTime >= 60000 && tempTime < 3600000)
{
System.out.println("bbbbbbbbbbbb");
long num = tempTime/1000/60;
System.out.println("cccccccccc");
String msg = " 上网时间已超过"+ num + "分钟";
System.out.println("ddddddddd");
JOptionPane.showMessageDialog(null, msg , "上网时间监控", JOptionPane.DEFAULT_OPTION); //①
System.out.println("eeeeeeeeeeeee");
}
else if(tempTime >= 3600000 && tempTime < 86400000)
{
long num = tempTime/1000/60/60;
String msg = " 上网时间已超过"+ num + "小时";
JOptionPane.showMessageDialog(null, msg , "上网时间监控", JOptionPane.DEFAULT_OPTION);
}
}
//临时获取当前时刻的联网总时间
public static long getAllTime()
{
return allTime + (lastTime - startTime);
}
}
复制代码
作者:
许庭洲
时间:
2013-3-4 06:22
值得学习ing!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2