2012-03-27 7 views
0

Wie kann ich einen neuen Thread in einem Webdienst erstellen? Ich brauche den Thread auf dem "Haupt" des Webdienstes, NICHT IN SERVERANRUFE.Java WebService Thread-Erstellung

Ich brauche es als Worker-Thread, so Server Anrufe senden Nachrichten an den Thread - für die Arbeit in BG getan werden und wird nicht blockiert die Server-Anfrage.

ich keine Ahnung, wie es

Antwort

1

Sie einen ThreadPool erstellen müssen tun, das ist eine Aufgabe, die Sie Aufgaben einreichen können, die dann auf dem Thread ausgeführt werden (s) dieser Threadpool.

Die einfachste Möglichkeit, einen ThreadPool zu erstellen, ist die Verwendung einer Klasse, die von der Klasse Executors erstellt wurde.

+0

Dies ist von der Frage nicht klar, aber wenn der Autor nicht schafft seine eigene Implementierung und verwendet Dritt ws stapeln, dann haben wir ein Problem hier: die meisten Implementierungen bereits Thread-Pools und jeder Thread in einem Pool verwenden wird ständig wiederverwendet. Ich würde in diesem Fall neue Threads als eine schlechte Übung betrachten. – Osw

1

Sie könnten versuchen, einen statischen Initialisierer in Ihrer Hauptklasse zu verwenden.

Hier verwende ich eine, um eine Timer-Aufgabe zu erstellen, die jede Stunde meine Eigenschaftsdatei erneut liest, aber Sie können sie für fast alles verwenden, einschließlich neuer Threads.

static { 
    // Read my properties at start-up. 
    readProperties(); 
    // Start a new timer task to repeat every hour. 
    int rate = Debug? 60*1000 : 1*60*60*1000; 
    // Make a daemon scheduled thread to re-read properties. 
    new Timer("Read properties timer", true).schedule(new TimerTask(){ 
     public void run() { 
      readProperties(); 
     } 
    }, rate, rate); 
}