java中有一种setjmp/longjmp吗?
Is there a kind of setjmp/longjmp in java?
我承认,如果可能的话,它会为糟糕、非常糟糕的代码敞开大门……但在某些特定情况下……
所以问题是,是否有 c setjmp/longjmp 的等价物?
我想在不使用线程的情况下实现类似 python 的生成器,只需保存堆栈和上下文,稍后再恢复。
简单回答:没有没有!您能得到的最接近的东西是标记为 breaks,这是一种向前跳转以跳出多个嵌套块,仅此而已!
虽然并不严格等同于 C longjump,但来自 apache commons 的 Javaflow 库提供了一种中断代码流的方法(与 Exceptions 一样,但需要捕获堆栈),并在稍后重新启动它。
这适合实现协程。但是需要修改字节码。
http://commons.apache.org/sandbox/commons-javaflow/index.html
我承认,如果可能的话,它会为糟糕、非常糟糕的代码敞开大门……但在某些特定情况下……
所以问题是,是否有 c setjmp/longjmp 的等价物?
我想在不使用线程的情况下实现类似 python 的生成器,只需保存堆栈和上下文,稍后再恢复。
简单回答:没有没有!您能得到的最接近的东西是标记为 breaks,这是一种向前跳转以跳出多个嵌套块,仅此而已!
虽然并不严格等同于 C longjump,但来自 apache commons 的 Javaflow 库提供了一种中断代码流的方法(与 Exceptions 一样,但需要捕获堆栈),并在稍后重新启动它。 这适合实现协程。但是需要修改字节码。
http://commons.apache.org/sandbox/commons-javaflow/index.html