我在节点之间做了路由协议数据包,我有以下问题,我认为是相关的线程,它们会覆盖变量,但不知道如何解决它。我有错误的代码如下:
pclass nodosVecinos extends Thread {
public static int port = 0;
String num_Nodo = "";
byte[] buf = new byte[10000];
public synchronized void run() {
DatagramPacket dP = new DatagramPacket(buf, buf.length);
DatagramSocket sK = null;
try {
System.out.println(port);
sK = new DatagramSocket(this.port);//<-- Problem
} catch (SocketException e) {
System.out.println("problem node "+num_Nodo);
e.printStackTrace();
}
System.out.println("Node "+ num_Nodo +" up!"); // Nodo 1 encendido!
while(true){
try {
sK.receive(dP);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("Problem node , While");
}
System.out.println(buf.toString());
}
}
public nodosVecinos (int puerto){
port = puerto;
num_Nodo = Integer.toString(port);
num_Nodo = num_Nodo.substring(num_Nodo.length()-1,num_Nodo.length()); // 8001 => 1
}
public static void main(String args[]) {
}
}
我离开了whitackack:
8001 // <--- out in terminal
-1 // <--- Whit breackpoint and error.
我尝试写静态变量端口,但没有去。
感谢您的帮助。
编辑:
端口是synchronized的extern,是类变量。
答案 0 :(得分:0)
你如何开始线程? 也许&#34;同步&#34;是问题。它导致整个方法在新线程启动之前执行,但这种方法是无限的。