Thread starten und Stoppen

Status
Nicht offen für weitere Antworten.
N

Numerobis

Gast
Hallo,


ich steh seit kurzen vor einer Hürde.

Ich habe noich nie Thread basierte Anwendungen in diesem Rahmen geschriebn.

Nun muss ich einen Thread über ein TCP/IP Interface starten und Stoppen .

Also ich habe eine kleine Swing Maske auf dem Desktop des Kunden , und auf einem entfernten Server eine anwendung zur Steuerung bzw. Überwachung von Fertigungstrassen.

Nun soll nach der Auth und dem Security Check , die Anwendung gestartet werden.

Sie beeinhaltet einen "Master" Thread , der alle anderen Anwendungen Steuert.

Die Maske baut die Verbindung zum Server auf .

Der Kunde soll Start oder Stop Initieren können , aber wie starte oder stoppe ich nun den Thread ?

Ein Server Cliente Konzept , für die TCP ist bereits installiert. Aber die Threads zu starten , oder gar zu stoppen ist etwas schwierig.


Kann mir da einen nen Tip geben?

Euer Numerobis
 
N

Numerobis

Gast
Danke ,


LOL


...

Aber wie mache ich das , das der Server Quasi wartet , das ich den Thread starte?


Code:
methode masterthread(){

...
}


while(start_knopf_nicht_gedrueckt){
masterthread = nicht laufen;

if (start_knopf_gedrueckt){

start.masterthread();

while(;;){
if(stop_knopf_gedrueckt){

stop.masterthread();

}


}


wie soll ich das umsetzen?

Also wie sag ich dem thread wann er starten und wann er stoppen soll?

Und das er eben warten , bzw. laufen möchte bis der Vorarbeiter die Maschinen wieder stopt?


mir fehlt es hier irgendwie an Syntax Praxis .
 
N

Numerobis

Gast
Ja geht das denn auch wenn der Server in diesem Falle gar nicht an das eigentliche AWT oder Swing Tool angebunden ist?


Ich mein die Panel Software ist ja auf einem anderen Rechner und verbindet via JavaBean .

Und der Server ist GUI los?
Ich mein den ActionListener.


Gib doch mal bitte ein Code Beispiel
 

DaKo

Bekanntes Mitglied
Code:
myStartButton.addActionListener(
   new ActionListener ( ActionEvent ae){
      rmiCallForThreadStarting();
   }
);
 
N

Numerobis

Gast
Also lieben dank erstmal.


Das ist Clientseitig richtig?




und wie würdest du es Serverseitig Implementiern?

[/code]
 

DaKo

Bekanntes Mitglied
Code:
rmiCallForThreadStarting(){
   ... Sicherheitsabfragen z.B. ob der Thread schon läuft ...
   myThread.start();
}
 

L-ectron-X

Gesperrter Benutzer
Die stop()-Methode aus Thread is deprecated und sollte nicht mehr verwendet werden.
Statt dessen sollte mit isInterrupted() und interrupt() gearbeitet werden.
Beispiele dazu finden sich hier im Forum.
 
N

Numerobis

Gast
aha ,


und dann meinst du einfach in der Endloschleife den Socket nach neuen Informattionen vom Client abfragen lassen bzw. ihn auf incoming information warten lassen,

und dann bei status x die methode 1 oder 2 oder 3 ausführen richtig?

Kann man dem Thread dann eine eindeutige ID zuweisen lassen und wenn der thread gestartet ist dann an den Client zzurückübermitteln lassen thread gestartet??
 
N

Numerobis

Gast
Also ,


Code:
ClientPanel(client_nr){

statknopf(){
connect to server ip;

Say start();

wait_for Return;

if return ok, say OK to -> Label;
}



stopknopf(){


connect to server x;

Say stop();

wait_for_return;
if return ok , say OK , stopped , to ->Label;
}



Panel(){

Show Start and Stop and Label 1;


}

}



Code:
Server (ip){


Listen on Socket ip for client incoming (or Shell Command) ;

if client Incoming , read command and set command to String Command ;

if Command = start , start.masterthread;
if Command = stop , stop.masterthread;
}


Die Application in Pseudo ;

Aber wie genau kann der Code aussehen für das warten auf das Commando ab , dem Socket?

Um den laufenden Thread immer zu stoppen bzw. immer starten zu können ?
 
N

Numerobis

Gast
Hier der Server Task der immer weiter läuft , und nicht stoppbar ist:


TimerThread ist nun als bsp. der Thread , der nur nach start in der Konsole startet es , und läuft Prima.


Das ist mein Problem


java.lang.InterruptedException: sleep interrupted


Aber stoppen ... äh äh :noe:

Code:
import java.io.*;
    import java.net.*;
    
    import java.util.*;
    
    
public class server {
    int ff;
    BufferedReader b = null;
    
    /** Creates a new instance of server */
    public server() {
    
        b = new BufferedReader(new InputStreamReader(System.in));
    }
    
    String readln() throws java.io.IOException {return b.readLine();}
    
    
     public static void main(String[] args)    throws java.io.IOException{
         server r = new server();
         String s = null;
    Thread tomo = new TimeThread();
     while ((s = r.readln())!= "exit"){
     System.out.println(s);
    
     if (s.equals("start")){
 System.out.println("start Initiated");
    tomo.start();
     
     
     }else{ System.out.println("No Start initiatetd");}

     if(s.equals("stop")){


     tomo.currentThread().interrupt();


     
     }
     
     }
     }
     
     }
}

TimeThread ist eine beispiel klasse, um den anderen source nicht posten zu müssen.

Code:
import java.util.*;
public class TimeThread  extends Thread{
    
    /** Creates a new instance of TimeThread */
    public void run()
    {
    while(true){
    GregorianCalendar d = new GregorianCalendar();
     System.out.println(d.get(Calendar.HOUR_OF_DAY)+d.get(Calendar.MINUTE)+d.get(Calendar.SECOND));
    
   try{
   Thread.sleep(1000);
   } catch(Exception e){
   System.out.println(e);
   
   
   }
    }
    
    
    }
}
 
N

Numerobis

Gast
Ich habs jetzt geschafft!


Der Thread ist 1. static zu definieren , dann kann man ihn immer wieder neu starten und stoppen.

TimerThrad , also die auszuführende Ebene , ist nicht mehr "extends Thread" sonder Runnable !


Code:
import java.io.*;
    import java.net.*;
    
    import java.util.*;
    
    
public class server {
  int tres;    
    int ff;
  static  Thread tomo = null;
    BufferedReader b = null;
    
    /** Creates a new instance of server */
    public server() {
    
        b = new BufferedReader(new InputStreamReader(System.in));
    }
    
    String readln() throws java.io.IOException {return b.readLine();}
    
    
     public static void main(String[] args)    throws java.io.IOException{
         server r = new server();
         String s = null;
//    TimeThread tomo = new TimeThread();
    

/** final Thread tomo = new Thread() 
{    private boolean running = true;
  
     public void run() 
    { 
while(Thread.currentThread().isAlive()){
    GregorianCalendar d = new GregorianCalendar();
     System.out.println(d.get(Calendar.HOUR_OF_DAY)+d.get(Calendar.MINUTE)+d.get(Calendar.SECOND));
    System.out.println(Thread.currentThread().activeCount());
   try{
   Thread.sleep(1000);
   } catch(Exception e){
   System.out.println(e);
   int tres;    
   
   }
    }        
    
     
    


} 
  };        
 
 *
 */        
         while ((s = r.readln())!= "exit"){
     System.out.println(s);
    
     if (s.equals("start")){
        
 System.out.println("Hi Mike, start Initiated");
 try{  
 TimeThread tomos = new TimeThread();
 tomo = new Thread(tomos);
 tomo.start();
 tomo.isDaemon();
 }catch(Exception e){System.out.println(e);}   }     
   
     if(s.equals("stop")){
     
        tomo.stop();
         System.out.println("Stop Initiatetd");
    
         
     }
   
         
         
      
     }
     
     
     }
     
     
     }

Code:
import java.util.*;
public class TimeThread  implements Runnable{
    private boolean running = true;
    /** Creates a new instance of TimeThread */
    public void run()
    {
    while(running){
    GregorianCalendar d = new GregorianCalendar();
     System.out.println(d.get(Calendar.HOUR_OF_DAY)+d.get(Calendar.MINUTE)+d.get(Calendar.SECOND));
    
   try{
   Thread.sleep(1000);
   } catch(Exception e){
   System.out.println(e);
   
   
   }
    }
    
    
    }
    
    public void stopp(){
    running = false;
    
    }
    }
 
B

Beni

Gast
L-ectron-X hat gesagt.:
Die stop()-Methode aus Thread is deprecated und sollte nicht mehr verwendet werden.
Statt dessen sollte mit isInterrupted() und interrupt() gearbeitet werden.
Beispiele dazu finden sich hier im Forum.
Ich möchte das nochmal wiederholen: "stop" durchbricht den Synchronisationsmechanismus. Ein "stop" an der falschen Stelle kann einen fast unauffindbaren Fehler in das Programm einschleusen, denn erstaunlicherweise wird ein Teil des Codes zwar 100% korrekt sein, aber trotzdem nur zur Hälfte ausgeführt (und halbveränderte Objekte im Speicher sind garnicht lustig).

Oder wolltest du in Zeile 71 was anderes schreiben?
Code:
      tomo.stop();

P.S. das wird wohl immer true sein :bae:
Code:
while(Thread.currentThread().isAlive()){

Aber ein "while( !Thread.currentThread().isInterrupted() ){...}" würde der Methode "Thread.interrupt" (welche Thread.stop ersetzt) entgegenkommen :wink:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Thread starten / stoppen / neustarten Allgemeine Java-Themen 8
M Thread aus anderer VM starten bzw. stoppen Allgemeine Java-Themen 7
C Thread stoppen und erneut starten Allgemeine Java-Themen 6
T Starten vom Thread Allgemeine Java-Themen 3
S Seperaten Thread starten Allgemeine Java-Themen 5
L Thread kurz unterbrechen und wieder starten Allgemeine Java-Themen 5
B MVC: controller in unabhängigen thread von der view starten (gui friert ein) Allgemeine Java-Themen 5
R Neuen Thread mit Verzoegerung starten..? Allgemeine Java-Themen 4
G Thread mehrmals starten Allgemeine Java-Themen 4
J Thread erneut starten? Allgemeine Java-Themen 7
S Zweiten Thread erst starten wenn erster Thread beendet ist ? Allgemeine Java-Themen 6
J Thread beenden und wieder starten? Allgemeine Java-Themen 20
K Thread für SocketServer nur einmal starten Allgemeine Java-Themen 5
T Wie kann man nur einen Thread starten Allgemeine Java-Themen 16
J Thread nochmal starten Allgemeine Java-Themen 6
M Kann ich einen thread zwei mal starten ? Allgemeine Java-Themen 3
R 11 GB File lesen ohne zu extrahieren Filedaten Bereich für Bereich adressieren dann mit Multi-Thread id die DB importieren Allgemeine Java-Themen 3
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
smarterToby Wie stoppe ich diesen Thread Allgemeine Java-Themen 4
A Thread.sleep Problem Allgemeine Java-Themen 2
J Thread started nur einmal Allgemeine Java-Themen 19
W Server-Thread schreibt nicht alle Dateien Allgemeine Java-Themen 6
OnDemand Logfile pro User / Thread Allgemeine Java-Themen 7
OnDemand Thread / Service abbrechen Allgemeine Java-Themen 3
Thallius Ist meine static Helper Class Thread save? Allgemeine Java-Themen 9
P Swing Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: npoints > xpoints.length || npoints > ypoints.length Allgemeine Java-Themen 5
B Thread.sleep() in EJB Container wie lösen? Allgemeine Java-Themen 11
S Ist das Neuzuweisen von Feldern atomic und damit Thread-Safe? Allgemeine Java-Themen 2
S Exception in thread "main" java.lang.NullPointerException at FamilienApp.main(FamilienApp.java:15) Allgemeine Java-Themen 1
J Einen Thread in einer Schleife Allgemeine Java-Themen 2
E HILFE !! Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils Allgemeine Java-Themen 4
Flynn Thread-Problem... Allgemeine Java-Themen 2
G Thread-Programmierung Allgemeine Java-Themen 5
S Datei wird nicht gefunden Thread.currentThread().getContextClassLoader().getResourceAsStream() Allgemeine Java-Themen 1
G Beendet sich der Thread selbst?! Allgemeine Java-Themen 3
mrbig2017 Sleep wird ignoriert und der Thread wartet nicht Allgemeine Java-Themen 1
S Thread beenden Allgemeine Java-Themen 9
M Array aus Thread Objekten erstellen Allgemeine Java-Themen 2
Aruetiise Swing JOptionPane ohne denn Thread zu pausieren Allgemeine Java-Themen 1
M Nanosekunden-Pause innerhalb einen Thread-Loops Allgemeine Java-Themen 3
E Thread Exception Allgemeine Java-Themen 6
javaerd Binomialkoeffizient ausrechnen, Exception in thread "main" java.lang.StackOverflowError Allgemeine Java-Themen 6
T Merkwürdiges Thread-Verhalten Allgemeine Java-Themen 6
K Thread Problem Allgemeine Java-Themen 6
W Thread sleep 30 sekunden - wenn keine Antwort bis dahin neu senden Allgemeine Java-Themen 2
H Thread bleibt stehen bei jar in jar Allgemeine Java-Themen 1
J Threads HTTP Request (Thread) dauert lange - in Android Allgemeine Java-Themen 3
F CPU Last eines Thread ausfindig machen Allgemeine Java-Themen 0
V Compiler-Fehler Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 125, Size: 125 Allgemeine Java-Themen 11
Tausendsassa Threads Einen Thread sich selbst schließen lassen Allgemeine Java-Themen 17
P Threads BufferedImage, Thread Concurrency Allgemeine Java-Themen 1
M Klasse in separaten Thread ausführen.Wie genau? Allgemeine Java-Themen 2
llabusch Thread blockiert Dialog Allgemeine Java-Themen 1
J Thread wait() Allgemeine Java-Themen 2
V Thread.sleep und InterruptedException? Allgemeine Java-Themen 1
G Thread nicht von GC zerstört Allgemeine Java-Themen 6
J Wie erschaffe ich einen sicheren Datenaustausch zwischen Thread und Nicht-Threads Allgemeine Java-Themen 8
Sogomn Thread blocken bis Taste gedrückt Allgemeine Java-Themen 5
T Wait/Notify() bei Thread Allgemeine Java-Themen 6
J Exception in thread "main" java.lang.NoClassDefFoundError Allgemeine Java-Themen 4
M Exception in thread "AWT-EventQueue-0" Allgemeine Java-Themen 6
Q Thread wacht nicht auf Allgemeine Java-Themen 7
T Fragen zum Thread-Thema Allgemeine Java-Themen 4
T Threads Input/Output im Thread - Datei ohne Inhalt Allgemeine Java-Themen 1
T Fragen zum Thread-Thema Allgemeine Java-Themen 9
C Threads Variablen in einem Thread Aktualisieren Allgemeine Java-Themen 17
U Thread beenden Allgemeine Java-Themen 3
W Threads Mit Thread und Runtime externe Programme öffnen Allgemeine Java-Themen 0
N Thread interrupt Status debuggen Allgemeine Java-Themen 6
A Thread: Code paralell ausführen in mehreren Instanzen Allgemeine Java-Themen 1
E Threads linkedlist/multi-thread problem Allgemeine Java-Themen 3
B Erkennen, wann Prozess beendet ist, dann Thread beenden. Allgemeine Java-Themen 6
A Thread Fehler absichtlich provozieren Allgemeine Java-Themen 3
B Threads Java Thread kommunizieren Allgemeine Java-Themen 12
N Thread Sicherheit im komplexen Datenmodell Allgemeine Java-Themen 7
K Thread richtig benutzen Allgemeine Java-Themen 3
K Exception in thread "AWT-EventQueue-1" Allgemeine Java-Themen 2
vandread Problem bei kleiner Thread-Übung Allgemeine Java-Themen 2
G Thread erzeugt nicht plausible NullPointerException Allgemeine Java-Themen 7
H Netbeans Warning bei Thread.sleep in Schleife Allgemeine Java-Themen 4
P [Thread] Scheint nicht Sequenziell zu Arbeiten Allgemeine Java-Themen 9
A eine test thread.join() frage Allgemeine Java-Themen 2
tuttle64 Verständnisprobleme mit Thread Locks Allgemeine Java-Themen 4
G Threads Thread bei Datenabfrage Allgemeine Java-Themen 3
S Thread anhalten per Button ? Allgemeine Java-Themen 3
E Thread Programmierung Allgemeine Java-Themen 2
S Threads ServerSocket-Thread soll schlafen, bis er gebraucht wird Allgemeine Java-Themen 2
V Thread schneller stoppen Allgemeine Java-Themen 2
V anstatt thread.join() einfach while schleife? Allgemeine Java-Themen 8
B Mausbewegung im Thread erkennen (hoch/runter) Allgemeine Java-Themen 6
G Linux/C++/Pthreads auf JVM zugreifen, thread safe? Allgemeine Java-Themen 10
K Threads Probleme mit Thread Allgemeine Java-Themen 13
K Threads Thread überprüfen Allgemeine Java-Themen 3
Z Threads Thread für einen Client Allgemeine Java-Themen 9
M Thread JavaFish Allgemeine Java-Themen 10
G Thread.sleep Allgemeine Java-Themen 12
M Threads Viele Aufrufe aus Thread, komisches Verhalten Allgemeine Java-Themen 8
B Threads Main Thread warten auf abgebrochen Task warten lassen Allgemeine Java-Themen 25
K Timer Thread Allgemeine Java-Themen 8
M Methoden Static Methoden und Thread??? Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben