Kann nicht über die run-Methode auf die Eigenschaften (Methoden) des Objekts zugreifen! Java Multithreading

Ich habe den folgenden Code in ServerConnectionManager:

public class ServerConnectionManager implements Runnable {

    private DatagramPacket receivedPacket;
    //some more things here


    public ServerConnectionManager(DatagramPacket receivedPacket){
        this.receivedPacket = receivedPacket;


        System.out.println("Connection manager has been assigned a request");
        System.out.println("The port of the request packet is "+receivedPacket.getPort());
         try {
             sendReceiveSocket = new DatagramSocket();
          } catch (SocketException se) {  
             se.printStackTrace();
             System.exit(1);
          }


    }

    @Override
    public void run() {

        //DEBUGGING LINES HERE
          System.out.println("The start method on connection manager works..");
          System.out.println("Point A");
          System.out.println("The port of the request packet is "+receivedPacket.getPort()); // the thread gets stuck here
          System.out.println("Does this work..?"); //This line never gets printed

          //some other stuff to be done here
                    }


         }

Und ich habe Code in der Ausführungsmethode einiger anderer Threads, die ServerConnectionManager verwenden: Lets Call this Thread B

    @Override
    public void run() {

        while(true){
           try {        
                 System.out.println("Waiting..."); // so we know we're waiting
                 receiveSocket.receive(receivePacket);
              } catch (IOException e) {
                 System.out.print("Stopped Listening for some reason..");
                 //e.printStackTrace();
            }

            System.out.println("Server received something" );

           //Constructor of ServerConnectionManager
             ServerConnectionManager serverConnectionManager = new ServerConnectionManager(receivePacket);
             Thread managerThread = new Thread(serverConnectionManager, "connectionManager ");
             managerThread.start();

                 //some more stuff to be done

                }

        }

Das Problem ist, dass ich keine Methoden für receivePacket aus der ServerConnectionManager-Ausführungsmethode aufrufen kann. Ich kann jedoch receivePacket.getPort () aus dem Konstruktor dieses ServerConnectionManager-Threads aufrufen und er gibt mir eine erwartete Ausgabe. Mit der run-Methode wird jedoch nichts ausgeführt. Die letzte Zeile, die ServerConnectionManager druckt, ist "Punkt A". Nichts danach !! Bitte überprüfen Sie meine DEBUGGING-Kommentare in diesem Bereich, um eine bessere Vorstellung davon zu bekommen, wovon ich spreche.

Ich weiß, ich habe eine Menge Code bereitgestellt. Aber ich kann das Problem überhaupt nicht verstehen. Ich habe versucht, zusätzliche Parameter (Objekte) von Thread B an den Konstruktor von ServerConnectionManager zu übergeben. Und ich kann über die Ausführungsmethode von ServerConnectionManager auf diese zugreifen. Es ist nur das ReceivedPacket, das nicht funktioniert ...

Antworten auf die Frage(2)

Ihre Antwort auf die Frage