Announcement

Collapse
No announcement yet.

das Ende des eigenenThreads mitbekommen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • das Ende des eigenenThreads mitbekommen

    Hallo zusammen,

    ich möchte gerne auf das Beenden des eigenen Threads (in dem Falle, Aufruf einer Webservice Methode und den Thread.currentThread) reagieren können.
    Bevor der Thread sich verabschieden, möchte ich in einer Objektinstanz in den Tiefen der Implementierung ein paar Aufräumarbeiten vornehmen.

    Weiß jemand, wie man das Ende des eingenen Threads mitbekommen ?
    Gibt es da ein Event ?
    Wie fange ich es ab ?

    Gruß
    riw

  • #2
    "Weiß jemand, wie man das Ende des eingenen Threads mitbekommen ? "
    Methode ->isAlive

    "Gibt es da ein Event ?"
    Nein

    Warum läst du die "Aufräummethode" nicht durch den Thread am Ende aufrufen?
    Zuletzt editiert von Christian Marquardt; 02.11.2012, 10:04.
    Christian

    Comment


    • #3
      Originally posted by Christian Marquardt View Post
      Warum läst du die "Aufräummethode" nicht durch den Thread am Ende aufrufen?
      Und wie ?

      Gruß
      riw

      Comment


      • #4
        Übergebe im Konstruktor des Thread die Instanz der Klasse die die Aufräummethode enthält und rufe die Methode am Ende des Threads auf
        Zuletzt editiert von Christian Marquardt; 02.11.2012, 10:37.
        Christian

        Comment


        • #5
          Originally posted by Christian Marquardt View Post
          Übergebe im Konsturktor des Thread die Instanz der Klasse die die Aufräummethode enthält und rufe die Methode am Ende des Threads auf
          Was versteht Du unter "Konsturktor des Thread" ?

          Gruß
          riw

          Comment


          • #6
            Den Konstruktor des Threads verstehe ich darunter

            [highlight=java] public class MyClass {

            public void aufraeumen() {
            //mache was
            }
            }
            [/highlight]

            [highlight=java] public class MyThread extends Thread {

            private MyClass myclass;

            public MyThread(MyClass myclass) {
            this.myclass = myclass;
            }
            @Override
            public void run() {
            // ... Threadabarbeitung
            myclass.aufraeumen();
            }
            }
            [/highlight]
            Christian

            Comment


            • #7
              Ich starte keinen Thread, ich habe nur den "Thread.currentThread". Und bevor er Tüsch sagt, möchte ich noch eine bestimmte Methode (einer statischen Klasse) aufrufen.

              Comment


              • #8
                Ich weiss nicht, was du unter "Thread.currentThread" verstehst. Wenn du ein JAR hast und es startest ist das der Hauptthread. Wenn der beendet wird, wer sollte da wo noch Code ausführen? (Ohne in der JVM zu fummeln) Anderseits warum führst du deinen Code nicht einfach aus-> letzte Zeile in der Main-Methode
                Christian

                Comment


                • #9
                  Originally posted by Christian Marquardt View Post
                  Ich weiss nicht, was du unter "Thread.currentThread" verstehst.
                  In einem Webservice unter jaxws ist der currentThread die aktuell aufgerufene Methode.

                  Originally posted by Christian Marquardt View Post
                  Wenn der beendet wird, wer sollte da wo noch Code ausführen? (Ohne in der JVM zu fummeln)
                  bevor der Thread beendet wird; das ist doch klar !!!

                  Originally posted by Christian Marquardt View Post
                  Anderseits warum führst du deinen Code nicht einfach aus-> letzte Zeile in der Main-Methode
                  weil ich nach einer eleganten Lösung suche, in allen Webservicemethoden bestimmte Aufräumarbeiten durchführen zu lassen, ohne dass man sich explizit darum zu kümmern braucht, spricht, ohne dass man eine Methode am Ende jeder Webservicemethode aufrufen muß.

                  Ein Even würde mir dafür reichen, aber du meinst, dieses gibt es nicht, hmmm ? Wirklich nicht ?

                  Comment


                  • #10
                    Nein, wirklich nicht...Du kannst dir allerdings ein Framework einbinden, das das tut
                    http://de.wikipedia.org/wiki/Aspekto...Programmierung
                    Christian

                    Comment


                    • #11
                      Originally posted by riw View Post
                      weil ich nach einer eleganten Lösung suche, in allen Webservicemethoden bestimmte Aufräumarbeiten durchführen zu lassen, ohne dass man sich explizit darum zu kümmern braucht, spricht, ohne dass man eine Methode am Ende jeder Webservicemethode aufrufen muß.
                      Du hast für dein Problem eine Lösung im Kopf, weißt nicht wie sie realisiert werden soll und fragst danach, anstatt das ursprüngliche Problem anzugehen. Dein Webservice läuft in einem Container. Die Spezifikation bietet dir über den Lebenszyklus des Calls/der Applikation Möglichkeiten für einen Eingriff. Dazu gehört es nicht, den ausführenden Thread zu manipulieren. Der wird in der Regel auch gar nicht beendet sondern wird wohl in einen Pool zurückgegeben und für den nächsen Call wiederverwendet.

                      Somit lautet die Frage: Was ist das für ein "Webservice"? Was soll warum zu welchem Zeitpunkt aufgeräumt werden?

                      Comment

                      Working...
                      X