我尝试过延迟(或休眠)我的Java程序,但是出现了一个错误。
我无法使用Thread.sleep(x)或wait()。同样的错误信息出现:
interruptedexception;必须被捕获或宣布被丢弃。
在使用Thread.sleep()或wait()方法之前,是否需要任何步骤?
我尝试过延迟(或休眠)我的Java程序,但是出现了一个错误。
我无法使用Thread.sleep(x)或wait()。同样的错误信息出现:
interruptedexception;必须被捕获或宣布被丢弃。
在使用Thread.sleep()或wait()方法之前,是否需要任何步骤?
当前回答
放置你的线程。睡在一个尝试捕捉块
try {
//thread to sleep for the specified number of milliseconds
Thread.sleep(100);
} catch ( java.lang.InterruptedException ie) {
System.out.println(ie);
}
其他回答
public static void main(String[] args) throws InterruptedException {
//type code
short z=1000;
Thread.sleep(z);/*will provide 1 second delay. alter data type of z or value of z for longer delays required */
//type code
}
eg:-
class TypeCasting {
public static void main(String[] args) throws InterruptedException {
short f = 1;
int a = 123687889;
short b = 2;
long c = 4567;
long d=45;
short z=1000;
System.out.println("Value of a,b and c are\n" + a + "\n" + b + "\n" + c + "respectively");
c = a;
b = (short) c;
System.out.println("Typecasting...........");
Thread.sleep(z);
System.out.println("Value of B after Typecasting" + b);
System.out.println("Value of A is" + a);
}
}
看看这篇关于如何正确做到这一点的简短文章。
本质上:捕获InterruptedException。记住,您必须添加这个捕获块。这篇文章对此作了进一步的解释。
当使用Android(我唯一一次使用Java)时,我会建议使用处理程序而不是让线程进入睡眠状态。
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
Log.i(TAG, "I've waited for two hole seconds to show this!");
}
}, 2000);
参考:http://developer.android.com/reference/android/os/Handler.html
正如其他用户所说的,你应该用try{…} catch{…}。但是自从Java 1.5发布以来,有了一个TimeUnit类,它的功能与Thread.sleep(millis)相同,但更方便。 您可以选择睡眠操作的时间单位。
try {
TimeUnit.NANOSECONDS.sleep(100);
TimeUnit.MICROSECONDS.sleep(100);
TimeUnit.MILLISECONDS.sleep(100);
TimeUnit.SECONDS.sleep(100);
TimeUnit.MINUTES.sleep(100);
TimeUnit.HOURS.sleep(100);
TimeUnit.DAYS.sleep(100);
} catch (InterruptedException e) {
//Handle exception
}
它还有其他的方法: TimeUnit Oracle文档
我给Java程序添加延迟的方法。
public void pause1(long sleeptime) {
try {
Thread.sleep(sleeptime);
} catch (InterruptedException ex) {
//ToCatchOrNot
}
}
public void pause2(long sleeptime) {
Object obj = new Object();
if (sleeptime > 0) {
synchronized (obj) {
try {
obj.wait(sleeptime);
} catch (InterruptedException ex) {
//ToCatchOrNot
}
}
}
}
public void pause3(long sleeptime) {
expectedtime = System.currentTimeMillis() + sleeptime;
while (System.currentTimeMillis() < expectedtime) {
//Empty Loop
}
}
这是针对顺序延迟,但对于循环延迟,请参考Java延迟/等待。