java - 暂时暂停方法直到下次调用

标签 java multithreading yield-return

是否可以创建一个方法,可以通过“返回”来暂时暂停自身,然后在再次调用时恢复?它应该表现得好像它从未返回(即保留其所有变量,继续执行下一行等)。

public static void main(String args) {
   method(); //should start method
   //do stuff ONLY AFTER method() RETURNS
   method(); //should continue method at same place as it ended
   //do more stuff ONLY AFTER method() RETURNS
}

private static void method() {
   while(true) {
        //do stuff
        return;

        //do different stuff
        return;

        //do a third thing
        return;

        //then start all over
    }
}

我在 StackOverflow 上看到了一些类似的问题,但没有一个答案似乎足够或具有解释性。

最佳答案

你要找的类似于C#的yield return语句: http://msdn.microsoft.com/en-us/library/9k7k7cf0.aspx

据我所知,Java 没有类似的构造。如果你真的很绝望并且不畏惧大量的字节码操作,你可以自己做一些事情:

首先创建一个具有名为yieldReturn() 的静态方法的类。然后,您可以搜索所有类以查找对该方法的调用,并按照 http://csharpindepth.com/articles/chapter6/iteratorblockimplementation.aspx 执行修改。

关于java - 暂时暂停方法直到下次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21473454/

相关文章:

multithreading - 线程已完成但循环未结束

java - 使用 Apache POI 时某些单元格不可见 - Java

java - 如何使用整数验证编辑文本的输入

java - 为什么executeUpdate()方法使用可调用语句返回-1而不是更新计数或0?

objective-c - 最好不要使用Core Data来简化线程安全性?

c# - 我想知道在迭代数据读取器对象时连接状态和 'yield' 对代码性能的影响

java - 使用 Java 线程设置超时

c# - 如何将 Parallel.ForEach 与线程局部状态一起使用?

c# - 检查 yield return 是否包含项目

C# 编译器不识别类似的 yield return 方法?