I have a Java function that is multi-threaded by OSB (oracle service BUs). This Java function calling three different native function through JNI. How to call these three function in such a way that :
第3个功能(清理系统)只能通过最后一个线程调用。 原生函数
设置();
计算();
清理();
JNI功能
JNIEXPORT jvoid JNICALL Java_taxcalc_setup
JNIEXPORT jstring JNICALL Java_taxcalc_calculation
JNIEXPORT jvoid JNICALL Java_taxcalc_cleanup
Java代码
public class taxcalc {
private static native void setup();
private static native String calculation(String input[],double y,int);
private static native void cleanup();
static{
System.loadLibrary("CJavaInterface_64");
taxcalc.setup();
taxcalc.cleanup();
}
public static String taxoutput(String [] args){
String array =“”;
for(int j = 0; j <= 5; j ++)
{
input[j]=args[j];
}
双y;
int BilledLines;
Y = Double.parseDouble(参数[6]);
BilledLines =的Integer.parseInt(参数[7]);
阵列= taxcalc.calculation(输入,Y,BilledLines,);
返回数组;
}
public static void main(String [] args){
System.out.println(taxoutput(args));
}
}
taxouput函数是从osb.now多线程的,我想调用setup()和
cleanup()的方式是,setup()应该仅为第一个线程和
cleanup()应该只调用最后一个线程。
答案 0 :(得分:0)
从代码中看,您需要使用本机函数进行初始化和清理。这可以使用java多线程完成,但我首先要注意OSB中的回调事件,您可以从中调用setup()和cleanup()方法。这样它会更清洁。