ネイティブ コードの別のスレッドにある場合は、停止してください。
//sample thread code
void thread(){
while (1) {
//do something
if ( done ) return;
}
}
ネイティブ関数を使用していて、Java に戻りたい場合は、そのまま戻ります。
関数呼び出しとループのもつれた迷路を作成した場合。すべて同様であり、外に出て、ネイティブ例外をスローし、最後のネイティブレベルでそれをキャッチして戻る必要があります。これはあまりお勧めできませんが、お勧めできませんが、この種の混乱に陥ることがあります。
// Do not write code like this
// A kitten and a puppy die every time you call it
void foo(){
while (1){
bar();
}
}
void bar(){
for( i=0; i < 100; i++){
baz();
quux();
}
}
void baz(){
// something
}
void quux(){
// something
if( want_to_exit) throw new GetOut();
}
void JNI_Method(.....){
try {
if (x) foo();
} catch ( GetOut g){
return;
}
}