DragonMaster
25-01-2007, 12:56
Ich habe mal eine Frage dazu wie Java genau die einzelnen Instanzen ein und des selben Programmes verarbeitet.
Folgende Situation stellt sich mir:
Ich habe ein Javaprogramm das eine Datei verschlüsselt. Die Datei wird mit der Prozess ID versehen. Das selbe gilt auch für die Ausgabe. Womit die Datei immer einen eindeutigen Namen hat, da die Prozess ID ja nicht mehrmals vergeben werden kann.
Dieses Programm kann nun mehrmals Parallel aufgerufen werden. Wenn dies nun passiert, kommt bei der Verschlüsselung nur noch Schrott raus. Es werden praktisch dieVerschlüsselungen der parallel laufenden Instanzen des Programms vermischt.
Das ganze findet unter Suse Linux statt.
Die Frage ist nun, wie handelt Java die Instanzen von diesem einen Programm ab? Ich dachte jedenfalls immer, das auch in der Java-VM jeder Aufruf so zu sagen seinen eigenen Prozess bekommt, der Unabhängig von den anderen Arbeitet. Das Verhalten zeigt jedoch leider etwas anderes. Das von diesem einen Programm, egal wieviele Parallel aufegrufen werden, immer nur eine Instanz existiert.
Oder gibt es möglichkeiten zu bestimmen ob von einer Klasse immer nur eine Instanz des Objektes existieren darf, unabhängig wie oft dieses eine Programm aufgerufen wird.
Der Aufruf des Programms erfolgt so:
cd /usr/labor/MeinJavaProc
/usr/bin/java -Xmx300m -Dfile.encoding=8859_1 -classpath "Bin/MeinJavaProc.jar:Bin/gnu.jar:Bin/bcprov-jdk14-133.jar:Bin/commons-beanutils.jar:Bin/commons-collections.jar:Bin/commons-digester.jar:Bin/commons-logging.jar:Bin/itext.jar:Bin/jasperreports.jar:Bin/jakarta-poi.jar" MeinJavaProc.Main -mMeinJavaProc -fQuelle/$1
rc=$?
exit $rc
Folgende Situation stellt sich mir:
Ich habe ein Javaprogramm das eine Datei verschlüsselt. Die Datei wird mit der Prozess ID versehen. Das selbe gilt auch für die Ausgabe. Womit die Datei immer einen eindeutigen Namen hat, da die Prozess ID ja nicht mehrmals vergeben werden kann.
Dieses Programm kann nun mehrmals Parallel aufgerufen werden. Wenn dies nun passiert, kommt bei der Verschlüsselung nur noch Schrott raus. Es werden praktisch dieVerschlüsselungen der parallel laufenden Instanzen des Programms vermischt.
Das ganze findet unter Suse Linux statt.
Die Frage ist nun, wie handelt Java die Instanzen von diesem einen Programm ab? Ich dachte jedenfalls immer, das auch in der Java-VM jeder Aufruf so zu sagen seinen eigenen Prozess bekommt, der Unabhängig von den anderen Arbeitet. Das Verhalten zeigt jedoch leider etwas anderes. Das von diesem einen Programm, egal wieviele Parallel aufegrufen werden, immer nur eine Instanz existiert.
Oder gibt es möglichkeiten zu bestimmen ob von einer Klasse immer nur eine Instanz des Objektes existieren darf, unabhängig wie oft dieses eine Programm aufgerufen wird.
Der Aufruf des Programms erfolgt so:
cd /usr/labor/MeinJavaProc
/usr/bin/java -Xmx300m -Dfile.encoding=8859_1 -classpath "Bin/MeinJavaProc.jar:Bin/gnu.jar:Bin/bcprov-jdk14-133.jar:Bin/commons-beanutils.jar:Bin/commons-collections.jar:Bin/commons-digester.jar:Bin/commons-logging.jar:Bin/itext.jar:Bin/jasperreports.jar:Bin/jakarta-poi.jar" MeinJavaProc.Main -mMeinJavaProc -fQuelle/$1
rc=$?
exit $rc