マルチスレッド環境での JNI の実装について混乱しています。ネイティブ インターフェイスを表す、以下のような Java クラスがあります。
public class Test {
public native int doSum(int a, int b);
}
また、対応するネイティブ メソッドは c で実装されます。
さて、私の質問は、複数のスレッドがあり、たとえば 5 つあり、それらすべてが上記のクラス Test の 1 つのグローバル インスタンスを使用しているということです。では、C で記述されたネイティブ メソッド コードがスレッド セーフになる可能性はありますか? または、質問に記載されているようにスレッドセーフにする必要がありますか?
また、スレッドごとに Test クラスのインスタンスを個別に作成し、ネイティブ関数を呼び出すとどうなりますか? それはスレッドセーフに動作しますか?
ありがとう。