我是新來的數據報套接字和線程。當我在命令提示符下運行代碼時,我期待看到打印出的6500和6501都只能看到6500.爲什麼代碼沒有運行第二個start()?我怎麼可以線程多個接收數據報套接字(最簡單的方式,不一定是最好的方式)?java線程和數據報套接字接收
public class startThread {
public static void main(String[] args) throws Exception, IOException {
new routerInterface(6500, "receive").start();
new routerInterface(6501, "receive").start();
}
}
public routerInterface(int virPort, String action) throws Exception{
System.out.println(virPort);
if (action.compareTo("receive")==0){
request = new DatagramSocket(clientPort);
receive();
}
}
public static void receive() throws Exception{
while(true) {
System.out.println("We are recieving here");
DatagramPacket p = new DatagramPacket(udpPack, udpPack.length);
request.receive(p);
byte[] reciv = p.getData();
}
}
此代碼在語法上不正確,沒有任何意義。 –
@DmitryBeransky很可能下次你可以解釋爲什麼它在語法上是不正確的,沒有意義,而不是簡單地說。這是第一次寫一個線程,我不知道我需要run()方法。 –
你是否通過java編譯器運行這個示例代碼?因爲我不明白這是如何編譯的。 –