dumme frage...
einen thread kann man ja mit Thread.sleep(1000) in den "schlaf" schicken...
aber wie kann ich ihn wieder "aufwecken"? Thread.interrupt() funktioniert irgendwie nicht!
dumme frage...
einen thread kann man ja mit Thread.sleep(1000) in den "schlaf" schicken...
aber wie kann ich ihn wieder "aufwecken"? Thread.interrupt() funktioniert irgendwie nicht!
wake gibt's anscheinend nicht mehr...
EDIT: hab's geschafft! wait() mach in etwa das selbe wie sleep() nur kann man es mit notify() oder notifyAll() wieder weitermachen
sleep(long millis)
Causes the currently executing thread to sleep (temporarily cease execution) for the specified number of milliseconds.
quelle: http://java.sun.com/j2se/1.4.2/docs/api/
ich denke, du musst den gar nicht wieder aufwecken. nach z.b. 1000 ms wird der thread automatisch wieder aktiviert.
ja das war eben das problem! ich MUSSTE ihn trotzdem aufwecken!
aber das problem ist gelöst...
und wie hast du es nun gemacht?
eben mit wait() und notify()
hab jetz einfach noch ein paar kleinere problemchen, aber die lösen sich schon noch
na gut... anderes java problem! gibt es eine möglichkeit festzustellen, wenn ein programm gekillt wurde? irgend ein unLoad event oder so was... es handelt sich um ein normales programm ohne GUI!
edit: ok bisschen mehr details... es wird ein programm gestartet, welches dann 5 threads eröffnet. und ich müsste jetzt feststellen können, wenn das programm beendet wird
Also im VB gibts event wie Close und Closing. Da gibts doch sicher auch so was in Java
ich glaub eben nicht... google findet auch nichts!
willst du wissen, wann ein bestimmter threadgeschlossen wird,
oder wann der letzte threadgeschlossen wird, und das programm somit
zu ende ist?
EDIT: also eine moeglichkeit waere, du machst dir selber irgend eine methode, die
dir mitteilt, wie auch immer dus mitgeteilt haben moechtest, das sich das programm jetzt
beendet, packst die in einen eigenen thread, aber anstatt den zu starten, haengst du
den deinem Runtime objekt als shutdownHook an.
somit wird dieser thread dann gestartet, wenn sich das proggi beendet, und du kriegst
mitgeteilt, das das programm nun am beenden ist.
ja wenn der letzte thread tot ist, ist das programm beendet!
leider ist mir das, was du da interessant beschieben hast etwas kompliziert bzw. hab kein word davon verstanden!
Ich weiss ist ein doppelpost, aber hier noch ein bisschen code:
EDIT: jetzt die lauffaehige version:
public class MyProgramm {
MyProgramm() {
super();
}
public void doSomething() {
System.out.println("Ich mach gerade irgendwas\n");
//danach beende ich mich, weil ich fertig bin
}
public static void main(String[] arg) {
MyProgramm myProgramm = new MyProgramm();
Runtime runtime = Runtime.getRuntime();
ShutdownMessageThread shutdownMessageThread = myProgramm.new ShutdownMessageThread();
runtime.addShutdownHook(new Thread(shutdownMessageThread));
myProgramm.doSomething();
}
private class ShutdownMessageThread implements Runnable {
ShutdownMessageThread() {
super();
// oder was immer du willst
}
public void run() {
System.out.println("Ich bin mich am beenden\nmit freundlichen Gruessen\nDein Programm");
// oder teils dir sonstwie mit...
}
}
}
danke... muss gleich mal testen
hmm, da ich das vorhin von hand direkt ins forumreingecodet habe, hats natuerlich ein
bisschen fehler drin.
ich hab mal noch schnell was voll funktionsfaehiges daraus gemacht, das waere hier
runterzuladen
was das programm macht:
es generiert eine instanz von sich, und haengt sich einen thread an, der beim beenden die ausgabe macht, das sich das programm beendet.
danach rufts eine methode auf, die einen string schreibt (irgend eine dummymethode halt)
danach beende ich das programm mit dem befehl System.exit(0);
und siehe da, das programm schreibt noch hin, das es sich beendet