2014-03-27 46 views
0

我在代碼中有超過1個線程有一些麻煩。我得到的錯誤:Java線程重疊

java.net.BindException: Address already in use: JVM_Bind 
Exception in thread "Thread-0" java.lang.NullPointerException 

這裏是我的代碼:

public static void main(String args[]) 
    { 

    Thread t1 = new Thread(new server(1)); 
    t1.start(); 

    Thread t2 = new Thread(new server(2)); 
    t2.start(); 
    } 

當線程T2代碼被註釋掉然後正常工作。

不太確定爲什麼我得到那個錯誤,這對我沒有意義。任何幫助,將不勝感激。

+2

'服務器顯示的代碼開始'類 – alex2410

+0

你是否試圖讓他們兩個在同一個端口上偵聽? –

+0

是同一端口服務=新ServerSocket(5000); – user3371315

回答

3

您必須更改第二個ServerSocket實例的端口,因爲只有一個ServerSocket可以同時綁定到同一個端口。

我建議像這樣的東西來提高您的server類:

public class server { 
    private static int port = 5000; 

    public server(int yourParameter) { 
    /*...*/ 
    service = new ServerSocket(port++); 
    /*...*/ 
    } 
} 

此代碼可以讓你的服務器被綁定到一個總是增加端口,從5000

+0

謝謝,你的參數是什麼? – user3371315

+0

我不知道,我只是將它添加到代碼中,因爲您提供了一個代碼段,在該代碼段中我讀取了'Thread t1 = new Thread(new server(1));',並且提供了一個整型參數給'server )'構造函數。這只是我給這個參數的名字,我不知道是什麼意思。 – AlQafir