Kommunikationsproblem, Thread und manuel

smolet

Neues Mitglied
Hallo,
ich habe eine Frage aber zuerst Situationsbeschreibung:

Ich bewerkstellige Netzwerkkommunikation zwischen PC und SPS mit NIO.
Senden, Empfangen geht alles gut.
Ich muss (leider) folgenden Ablauf einhalten: Verbinden, Senden, Empfangen, Disconnecten, ich nenne das eine Abfrage.
Mein Programm startet ein Thread der sagen wir 10 sequentielle Abfragen alle 5 Sekunden startet.
so weit läuft das gut, pro Anfrage wird etwa 300ms verbraucht.
Nun möchte ich manuel eine Abfrage durchführen (realisiert durch Buttonklick). Und hier gibts ein Problem! Bei der zeitlichen Überschneidung von manuellen Abfrage und dem Thread, passiert dass die Verbindung von einer Abfrage geschlossen wird während andere noch läuft. Dies führt zu Exception.
Anderes Problem ist wenn Anzahl der Abfragen so groß ist das die Abarbeitungszeit 5 Sekunden übersteigt.

Was ist die gute Lösung für sowas? Wie kann ich die Kommunikation gestallten das alle Abfragen dran kommen?

Danke für die Vorschläge und Tipps!
 

Empire Phoenix

Top Contributor
Simple:
Alle anfragen werde in einer liste vermerkt und ein thread arbeitet diese sequenziel ancheinander ab.

Kompliziert:
Threadpool der x worker enthält die x anfragen gleichzietig stellen die mithilfer einer Queue zur verfügung gestellt werden.


Am rande, wenn ein Thread einena dneren beifluss so wie bei dri beschreiben deuted da auf falsche verwendug von static hin.
 

smolet

Neues Mitglied
Danke!
ich habe mir das mit der Liste als Stack schon gedacht. Die manuellen Abfragen werden ganz oben in den Stack abgelegt so das sie früher dran kommen.
Gibt es schon etwas in der Art oder muss ich das selbst realisieren?

Kannst Du bitte mehr Hinweise auf Problem mit Static geben?
Ich benutze Singelton Muster für Bewerkstelligen der Kommunikation. Kann es daran liegen?
 

Empire Phoenix

Top Contributor
Benutzt du eine connection? bzw sit das feld der connection static? dass wenn eine Abfrage die connection closed am ende eine evtl andere laufende ihre unter der nase wechgeschossen bekommt?

Je anch service ist es sinvoll dass du für jede abfrage eine connection erstellst und am ende schliest. (Btw müssen die wirklich geschlossen werden klingt komisch)
 

Kr0e

Gesperrter Benutzer
Musst du es selbst machen ? Meistens sind eigene NIO Impl. langsamer als simple Socketprogrammierung mit einem Thread pro Client. Um die Fähigkeiten von NIO auszuschöpfen, musst du fundiertes Wissen über Concurrency&Threading haben.

JBOss Netty3 (Mein Favorit) oder Apache Mina sind hier die beiden "Marktführer", es gibt noch andere aber das AFAIK die Besten/Ausgereiftesten.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Kommunikationsproblem zwischen JAVA-client und C-Server Netzwerkprogrammierung 5
OnDemand Thread und Ratelimiter Netzwerkprogrammierung 4
F Thread "extern" beenden Netzwerkprogrammierung 3
OnDemand Linux RAM per Thread Netzwerkprogrammierung 3
V Socket Audio Clip loopen ohne neuen Thread Netzwerkprogrammierung 2
C Thread Netzwerkprogrammierung 9
platofan23 Socket Hilfe mit Socket Thread und ArrayList Netzwerkprogrammierung 6
A RMI RMI - Thread Objekte übertragen und auf anderer Machine weiterlaufen lassen Netzwerkprogrammierung 0
S Socket ThreadPool oder Thread pro Client? Netzwerkprogrammierung 11
T Socket Server starten Thread Problem Netzwerkprogrammierung 12
P Wie spreche ich einen Thread an? Netzwerkprogrammierung 20
M Thread Scheduler Java 5.0? Netzwerkprogrammierung 2
7 Mehrere Verbindungen gleichzeitig in einem Thread mit ApacheHTTP Netzwerkprogrammierung 7
D Socket Dynamische Socket-Thread Erzeugung Netzwerkprogrammierung 2
B Socket Thread handling / Reader init Netzwerkprogrammierung 8
Z Socket Socket-Thread falsch? Netzwerkprogrammierung 5
Helgon Socket Thread Pooling Netzwerkprogrammierung 6
M Was macht Thread, wenn er aus einem "leeren" Inputstream liest ? Netzwerkprogrammierung 5
B callback thread udp Netzwerkprogrammierung 2
D RMI und Thread Netzwerkprogrammierung 4
U Socket Abhören eines Sockets/Ports in extra Thread Netzwerkprogrammierung 8
K ein Thread pro Stream Netzwerkprogrammierung 2
D Weiterer Thread auf Port 843 horcht Netzwerkprogrammierung 7
D Thread problem Netzwerkprogrammierung 3
S Thread, Daten vom Socket lesen Netzwerkprogrammierung 2
S Thread Transport Netzwerkprogrammierung 6
S Socket Thread in Schleife Netzwerkprogrammierung 4
G Objekte per TCP verschicken + Thread Netzwerkprogrammierung 4
T synchronized mit thread und rückgabe Netzwerkprogrammierung 4
Q Thread und Sockets... Netzwerkprogrammierung 2
2 Class mit ServerSocket erbt von Thread? Netzwerkprogrammierung 3
PAX Outputstream von anderem Thread verwenden lassen Netzwerkprogrammierung 5
C Server mit Multithreading (Thread-Pool) Netzwerkprogrammierung 2
E java.lang.NullPointerException aber nur wenns im Thread läuf Netzwerkprogrammierung 4
F EIN Thread in RMI auf Serverseite Netzwerkprogrammierung 3
G Server Thread beenden Netzwerkprogrammierung 16
T Socket-Thread: Designfrage Netzwerkprogrammierung 14
S Mit Thread arbeitende Maschine Netzwerkprogrammierung 6
T select() ohne NIO - oder wie Worker-Thread sauber beenden? Netzwerkprogrammierung 9
K Selbe Streams mehrfach nutzen (zusätl. Thread) Netzwerkprogrammierung 6
ven000m Thread Frage Netzwerkprogrammierung 11
B Thread.start() (run()) excption Netzwerkprogrammierung 2
M Thread läuft nicht weiter Netzwerkprogrammierung 2
B NullPointerException | Thread Netzwerkprogrammierung 4
U Current thread not owner Netzwerkprogrammierung 3
S readline-thread stoppt vorzeitig Netzwerkprogrammierung 6
J RMI - (RemoteException occurred in server thread) Netzwerkprogrammierung 2
S Webserverprogrammierung: Thread-Beschränkung Netzwerkprogrammierung 2
M Exception in thread "main" java.lang.NoClassDefFou Netzwerkprogrammierung 2
F problem mit thread bzw. netzwerkverbindung! Netzwerkprogrammierung 3
L netzwerk mit thread Netzwerkprogrammierung 3
G RMI thread safe ? Netzwerkprogrammierung 11
A Thread gibt Nachrichten mehrmals aus (Messenger in Java) Netzwerkprogrammierung 3

Ähnliche Java Themen


Oben