变量不会改变线程中的valor

时间:2015-04-11 17:41:58

标签: java multithreading protocols network-protocols

我在节点之间做了路由协议数据包,我有以下问题,我认为是相关的线程,它们会覆盖变量,但不知道如何解决它。我有错误的代码如下:

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,是类变量。

1 个答案:

答案 0 :(得分:0)

你如何开始线程? 也许&#34;同步&#34;是问题。它导致整个方法在新线程启动之前执行,但这种方法是无限的。