我正在嘗試創建一個服務器偵聽器。它位於後面並等待來自客戶端的數據,並根據數據的性質執行設置操作。但是現在,在接收到第一個數據流之後,它進入資源管理器,內存使用率開始上升,並且CPU使用率超過了單個內核。單個java線程使用多餘的系統資源
1 - 我該如何解決這個問題?我怎樣才能使它聽沒有所有的資源豬,因爲你可以看到它是一個非常小的程序。
2 - 發送這些數據流的客戶端本身運行一次。它啓動,連接到服務器,發送數據並退出。雖然服務器仍處於「打開」狀態,但如果我再次嘗試運行客戶端,則服務器不會收到數據。
服務器代碼:
package mediaserver;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Main {
ServerSocket ss;
Socket s;
BufferedReader br;
public Main() throws IOException{
ss = new ServerSocket(1111);
s = ss.accept();
br = new BufferedReader(new InputStreamReader(s.getInputStream()));
new Thread(new runner()).start();
}
class runner implements Runnable{
public void run(){
while(true){
try {
String n = br.readLine();
System.out.println(n);
} catch (IOException ex) {
}
finally{
try {
s.close();
ss.close();
} catch (IOException ex) {
}
}
}
}
}
public static void main(String[] args) throws IOException {
new Main();
}
}
package mediaserver;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class test {
public static void main(String [] args) throws UnknownHostException, IOException, InterruptedException{
Socket s = new Socket("127.0.0.1", 1111);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
bw.write("");
bw.newLine();
bw.flush();
}
}
只需在調試器中按* Pause *並檢查它在做什麼。 – Codo
這是調試器的用途。學習時間。 –