Java 延迟地从同一循环调用不同的方法
如何在同一个循环中延迟调用不同的方法Java 延迟地从同一循环调用不同的方法,java,android,multithreading,Java,Android,Multithreading,如何在同一个循环中延迟调用不同的方法 time 0: call A +100ms: call B +100ms: call C +100ms: call D ... +100ms: call X stopLoop() 我试过: Thread thread = new Thread() { @Override public void run() { try
time 0: call A
+100ms: call B
+100ms: call C
+100ms: call D
...
+100ms: call X
stopLoop()
我试过:
Thread thread = new Thread() {
@Override
public void run() {
try {
while (true) {
call A();
sleep(100);
call B();
sleep(100);
call C();
sleep(100);
call D();
sleep(100);
call E();
sleep(100);
thread.stop(); ???
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
thread.start();
除了stop()之外,它还在工作,而且从同一个线程内部终止线程看起来不符合逻辑。thread.interrupt()是一种完全可以接受的方法
中断此线程。除非当前线程正在中断
它本身(总是被允许的)的checkAccess方法
线程被调用,这可能导致抛出SecurityException
如果该线程在wait()的调用中被阻塞,wait(long),
或对象类或join()的wait(long,int)方法,
join(long)、join(long,int)、sleep(long)或sleep(long,int)方法
则其中断状态将被清除,并且
接收中断异常
如果此线程在I/O操作中因可中断事件而被阻塞
然后通道将关闭,线程的中断状态
将被设置,并且线程将接收ClosedByInterruptException
如果该线程在选择器中被阻塞,则该线程的中断
将设置状态,并立即从选择返回
操作,可能使用非零值,就像选择器
已调用唤醒方法
如果前面的条件都不成立,那么这个线程的中断
将设置状态
中断一个非活动线程不需要有任何效果
试着这样做:
while (!Thread.currentThread().isInterrupted()) {
//Call methods .
Thread.currentThread().interrupt();
}
你能告诉OP如何正确使用它吗?现在这应该是一个注释。使用
Thread.currentThread().interrupt()
还是用while()
覆盖循环更好?