Autor Thema: NotesThread beenden  (Gelesen 2668 mal)

Sebastianh

  • Gast
NotesThread beenden
« am: 14.05.09 - 12:26:33 »
Hallo,

ich habe eine Klasse
Code
public Class1 extends NotesThread

die ich wie folgt aufrufe:
Code
public static void main(String args[]) {
	Class1 t = new Class1(args[0]);
	t.start();
}

der auszuführende Code steht in der Methode runNotes() die ich, wie vorgegeben, überschreibe. Nach erfolgreicher Abarbeitung des Codes beendet sich das Programm allerdings nicht, der Thread bleibt aktiv. Wie kann ich das Programm denn terminieren lassen?

NotesThread.currentThread().stop();
NotesThread.currentThread().interrupt();
oder auch:
NotesThread.stermThread();

erzielen nicht die gewünschte Wirkung.

Gruß,
Sebastian

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: NotesThread beenden
« Antwort #1 am: 14.05.09 - 12:51:02 »
Das kommt auf den Code in dem Thread an. Wenn deine Methode zu einem Ende kommt wird der Thread automatisch beendet. Sonst einfach mal mit dem Debugger deiner Entwicklungsumgebung schauen wo er hängt.

Auf keinen Fall, darfst du dein Programm in der runNotes Methode irgenwie beenden. Das führt auf jeden Fall zu Problemen mit dem C++ Backen.


Grüße

Ralf

P.S. warum verwendest du überhaupt NotesThread ich verwende immer die static Methoden für die Intialisierung siehe Auszug aus der Designer Help

To execute threads through the static methods, call sinitThread() to initialize a thread and stermThread() to terminate the thread. Call stermThread() exactly one time for each call to sinitThread(); putting stermThread in a finally block is recommended.
Code

public class myClass
{
    public static void main(String argv[])
    {
        try
        {
            NotesThread.sinitThread();
            // my code
        }
        //my code
        finally
        {
            NotesThread.stermThread();
        }
    }
}
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Sebastianh

  • Gast
Re: NotesThread beenden
« Antwort #2 am: 14.05.09 - 13:01:25 »
Ok, das mit den statischen Methoden war schonmal ein guter Tip, danke!

Allerdings ist das beobachtete Verhalten das selbe. Mit dem Debugger komme ich (nach Abarbeitung des finally-Blocks) in die Thread.class wo nach Abarbeitung folgenden Codes hängen geblieben wird:

Code
private void exit() {
   if (group != null) {
      group.remove(this);
         group = null;
   }
   /* Aggressively null out all reference fields: see bug 4006245 */
   target = null;
   /* Speed the release of some of these resources */
   threadLocals = null;
   inheritableThreadLocals = null;
   inheritedAccessControlContext = null; 
   blocker = null;
   uncaughtExceptionHandler = null;
}

Sebastianh

  • Gast
Re: NotesThread beenden
« Antwort #3 am: 14.05.09 - 13:26:30 »
ok, Problem lag an einem anderen Modul das innerhalb des Codes aufgerufen wurde. Notes ist "ausnahmsweise" mal unschuldig :)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz