ich habe mir zwei Applets geschrieben. Ein Applet liest zyklisch von einer Datei am Server Werte (Zeilen) ein. Das zweite Applet nicht einen Wert (je nach Aufrufparameter) und stellt diesen dar.
Wenn ich diese Seite mehrmals ca. 3-5 mal neu lade (F5) dann hängt sich Mozilla auf (Konqueror zeigt mir an das mehr Applets geladen sind als auf der Page vorhanden) Ich habe das Gefühl das
1. beim wechseln der Seite die Applets nicht vernichtet werden 2. Applets die noch laufen nicht wiederverwendet werden, sondern neu erzeugt werden.
Hier mal der Code vom Applet das eine Datei einliest.
Hab das Ganze nur mal überflogen,aber irgendwie stösst mir die Anweisung t=null; in deiner stop() Methode sauer auf. Kommentier die mal aus und probier es dann nochmal.
MfG Spacelord -- .....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
@ Spacelord: Also das mit dem t=null ist die normale Methode einen Thread zu beenden. Bei mir funktioniert das immer einwandfrei.
@worst_case: Also ich hab mir den Code angesehen und kann keine Fehler finden. Ich denke, dass da der Browser nicht richtig funktioniert. Was anderes kann ich mir nicht vorstellen. Schau mal ob bei anderen Seiten mit Applets das gleiche Problem auftritt. -- All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
Der Thread wird doch schon dadurch beendet dass running=false gesetzt wird. Wenn in der Schleifenbedingung nicht T!=null abgefragt wird ist t=null doch ansich überflüssig. Ich halte es aber für bedenklich wenn das Objekt des (noch) laufenden Threads dem GC zum Frass vorgeworfen wird.
MfG Spacelord -- .....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
Ich habe auf meine Page mehrere Applets. Wenn ich die Seite wechsle dann muss ich doch die applets löschen, obwohl manchmal die selben (andere Parameter) applets auf einer anderen Seite ebenfalls sind ? Der Browser (Intranet) wird vermutlich !!nie!! geschlossen, bekomme ich dann nicht immer neue Applets hinzu ?
Nein im Grunde musst die Applets nicht löschen. Das übernimmt der normalerweise der Browser für dich. Versuch mal die Threads mit der interrupt-methode zu stoppen. wenn es dann nicht funktioniert, dann probier noch die isinteruppted-methode aus. wenn sie true zurückliefert, dann kannst du ja noch einmal die zeile mit t=null versuchen. -- All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
Yep, start() kann so bleiben und in stop nur t.interrupt();. Mit Applets kenn ich mich nicht aus aber vom Standpunkt des Threads aus ist dann alles o.k.
PS: Die Art den Thread über interrupt zu beenden bietet sich bei dir an weil du sleep in deiner run-Methode nutzt!
MfG Spacelord -- .....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.