获取时间: 时获取当前时间: long befor = System.currentTimeMills(); long delay = ??? //自己定义规格超时时间;如30秒那么它就是(30*1000=30000) long after = befor + delay; boolean isXXX = false; while(System.currentTimeMills() <= after) //如果没有超时,就继续 { //do more work.............. if (System.currentTimeMills = after){ isXX = true; } else isXXX =false;
} if (isXXX) { return ; //返回,后面的不再执行 }else //执行另外的处理语句不管是成功或者失败都回返回的,在返回方法中获取当前时间: long after = System.currentTimeMills();long delay = befor - after ;//超时 如果超时就让线程进行等待wait或者不活动join
//do more work.............. 在这里程序会停住啊?后面的 if (System.currentTimeMills = after) 判断是永远到不了的
if (System.currentTimeMills = after) 判断是永远到不了的!! 换成if (System.currentTimeMills >= after)不就ok了
同1个线成当然会卡住咯。。可以多线的话做个内部class public class test extends Thread { private Boolean running = new Boolean(true); public void run() { synchronized(running){running = new Boolean(true);)} //do your code here synchronized(running){running = new Boolean(false);)} } public boolean getRunning() { synchronized(running){ boolean b = running.boolValue();} } public void stopRunning(){} class Timer extends Thread { public void run() { try{sleep(30000);if(getRunning()) stopRunning();}catch(Exception e){} } } }看了无法创建的原因了。要不只能在stopRunning()里面强行stop线成 这个做法就不是很好了
时获取当前时间:
long befor = System.currentTimeMills();
long delay = ??? //自己定义规格超时时间;如30秒那么它就是(30*1000=30000)
long after = befor + delay;
boolean isXXX = false;
while(System.currentTimeMills() <= after) //如果没有超时,就继续
{
//do more work..............
if (System.currentTimeMills = after){
isXX = true;
}
else
isXXX =false;
}
if (isXXX) {
return ; //返回,后面的不再执行
}else
//执行另外的处理语句不管是成功或者失败都回返回的,在返回方法中获取当前时间:
long after = System.currentTimeMills();long delay = befor - after ;//超时 如果超时就让线程进行等待wait或者不活动join
在这里程序会停住啊?后面的
if (System.currentTimeMills = after)
判断是永远到不了的
另外,Timer会自动另开一个线程的。不需要用System.currentTimeMills()之类的东西
判断是永远到不了的!!
换成if (System.currentTimeMills >= after)不就ok了
public class test extends Thread
{
private Boolean running = new Boolean(true);
public void run()
{
synchronized(running){running = new Boolean(true);)}
//do your code here
synchronized(running){running = new Boolean(false);)}
} public boolean getRunning()
{
synchronized(running){
boolean b = running.boolValue();}
} public void stopRunning(){}
class Timer extends Thread
{
public void run()
{
try{sleep(30000);if(getRunning()) stopRunning();}catch(Exception e){}
}
}
}看了无法创建的原因了。要不只能在stopRunning()里面强行stop线成 这个做法就不是很好了
isXX = true;
}
else
isXXX =false;
时间运算也许有差异这处判断可能不行,照wthwebbe(honghong)说的做吧。