解決する必要がある問題があります:
オブジェクトを作成し、そのオブジェクトのメソッドを利用するネイティブメソッドを備えたJavaがあります。これは私の Java コードです。IssmJni という名前の Java ファイルがあり、ネイティブ メソッドが含まれています。
public static native long fac(long n);
static {
System.loadLibrary("FacLib");
}
public static long facIterative(long n)
{
return fac(n);
私のメインクラスにはこれがあります:
long result = IssmJni.facIterative(Long.parseLong(input));
System.out.println(result);
これは私のC++コードです:メインファイル:
static jlong factorial(JNIEnv *env, jclass clazz, jlong n)
{
fac *f = new fac();
jlong result = (jlong) (f->factorial(n));
delete(f);
return (jlong) result;
}
ヘッダファイル:
class fac
{
public:
long factorial(long n);
};
fac.cpp:
#include "com_lan_factorial_FacLib.h"
#include "fac.h"
long fac::factorial(long n)
{
long f = 1;
long i;
for(i = 1; i <= n; i++)
{
f *= i;
}
return f;
}
すべて正常に動作するため、UI は C++ コードと呼ばれる数値を入力し、新しいオブジェクト呼び出し fac を生成し、そのクラス fac でメソッド factorial を使用します。この行で
fac *f = 新しい fac(); jlong 結果 = (jlong) (f->factorial(n));
私が望むのは、同じオブジェクト fac を維持することですが、異なる入力で階乗法を利用することです。pthread は複雑すぎるため、避けようとしています。別の Java スレッドを作成し、アプリのプロセス全体を通してこのオブジェクトを維持し、新しいユーザー入力があるたびにその階乗を使用する方法はありますか? 次に、アプリが終了したときにこのオブジェクトを取り除きますか?
要するに、オブジェクト fac の 1 つのインスタンスを保持し、階乗法を何度も使用したいと考えています。ネイティブ pthread を実行しなくても可能ですか? ありがとう