java中有一种setjmp / longjmp吗?

时间:2015-12-26 10:55:54

标签: java c longjmp setjmp

我承认,如果有可能的话,它会对坏的,非常糟糕的代码敞开大门......但在某些特定情况下...

所以问题是,是否有 setjmp / longjmp的等价物?

我想在不使用线程的情况下实现类似python的生成器,只需保存堆栈和上下文,然后再恢复它。

1 个答案:

答案 0 :(得分:1)

虽然不完全等同于C longjump,但来自apache commons的Javaflow库提供了一种中断代码流的方法(例如Exceptions do,但是捕获了堆栈),并在以后重新启动它。 这适用于实现Coroutines。但是,它需要修改字节码。

http://commons.apache.org/sandbox/commons-javaflow/index.html