我承认,如果有可能的话,它会对坏的,非常糟糕的代码敞开大门......但在某些特定情况下...
所以问题是,是否有c setjmp / longjmp的等价物?
我想在不使用线程的情况下实现类似python的生成器,只需保存堆栈和上下文,然后再恢复它。
答案 0 :(得分:1)
虽然不完全等同于C longjump,但来自apache commons的Javaflow库提供了一种中断代码流的方法(例如Exceptions do,但是捕获了堆栈),并在以后重新启动它。 这适用于实现Coroutines。但是,它需要修改字节码。
http://commons.apache.org/sandbox/commons-javaflow/index.html