Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 延迟地从同一循环调用不同的方法_Java_Android_Multithreading - Fatal编程技术网

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()
覆盖循环更好?