Hi, Ich habe 2 verschiedene Threads, der eine empfängt UDP-Packete vom Netzwerk und soll sie in seine interne Queue schreiben.
Der Andere soll aus dieser Queue lesen und anschließend das erhaltene Packet weiter behandeln. Jedoch zerschießt sich Thread1, wenn eine Methode auf der Referenz des erhaltenen Packets ausgeführt wird.
Ich habe den etsprechenden Code unten gepostet.
In einem weiteren Ausschnitt des gesammten Projektes gibt es einem anderen Thread der genauso arbeitet wie Thread1. Dieser funktioniert jedoch tadellos. Ich vermute daher ein Problem mit der Threadinteraktion.
Danke für Eure Hilfe.
Der Andere soll aus dieser Queue lesen und anschließend das erhaltene Packet weiter behandeln. Jedoch zerschießt sich Thread1, wenn eine Methode auf der Referenz des erhaltenen Packets ausgeführt wird.
Ich habe den etsprechenden Code unten gepostet.
In einem weiteren Ausschnitt des gesammten Projektes gibt es einem anderen Thread der genauso arbeitet wie Thread1. Dieser funktioniert jedoch tadellos. Ich vermute daher ein Problem mit der Threadinteraktion.
Danke für Eure Hilfe.
Java:
//Thread1
DatagramPacket packet = null;
while (true) {
try {
packet = lnS.getReceivedmessage();
System.err.println("testausgabe 1");// wird noch ausgegeben
System.out.println("packetdata:"+packet.getData());// hier hängt er sich weg
InetAddress senderAddress = packet.getAddress();
bmP.deserialize(packet.getData());
handleIncommingMessagetype(senderAddress, bmP);
} catch (InterruptedException e) {
e.printStackTrace();
}
Java:
//Thread2
private BlockingQueue<DatagramPacket> receivedMessages = new LinkedBlockingQueue<DatagramPacket>();
/*** nimmt erhaltenes DatagramPacket aus der Blockingqueue***/
public DatagramPacket getReceivedmessage() throws InterruptedException {
this.packet =receivedMessages.take();
if (verbose)
System.out.println("LNS: packet entnommen");
return this.packet;
}