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 :
- La première fonction (configuration du système) n'appellera que pour le 1er thread.
- La 2ème fonction appellera par tous les threads.
La 3ème fonction (nettoyage du système) ne sera appelée que par le dernier thread. Fonctions nativesComment gérer multithread dans Java?
setup();
calcul();
Nettoyage();
JNI fonctionne
JNIEXPORT jvoid JNICALL Java_taxcalc_setup
JNIEXPORT jstring JNICALL Java_taxcalc_calculation
JNIEXPORT jvoid JNICALL Java_taxcalc_cleanup
du code 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(); }
chaîne taxoutput statique publique (String [] args) {
de tableau de chaînes = "";
for (int j = 0; j < = 5; j ++)
{
input[j]=args[j];
}
double-y;
int BilledLines;
y = Double.parseDouble (arguments [6]);
BilledLines = Integer.parseInt (args [7]); Array = taxcalc.calculation (entrée, y, BilledLines,)
tableau de retour;
}
public static void main (String [] args) {
System.out.println(taxoutput(args)); }
}
fonction taxouput est multithread de osb.now, je veux appeler la configuration() et
cleanup() de telle sorte que setup() ne doit être appelé que pour le premier thread et
cleanup() ne doit appeler que pour le dernier thread.
Veuillez ajouter quelques détails si vous voulez une réponse détaillée. À première vue, c'est quelque chose que les sémaphores peuvent gérer, mais nous devons en savoir plus. – biziclop
pouvez-vous poster du code, ce que vous avez essayé et comment vous vous attendez à ce qu'il se comporte, de sorte que nous puissions avoir une meilleure compréhension. –
Si vous avez une fonction, 'f (...)', et vous voulez seulement qu'un certain thread l'appelle, alors vous devriez seulement mettre des appels à 'f (...)' dans le code pour ce thread. –