Я реализовал прослушиватель Socket для чтения данных, отправленных с GPS, но он достигает 90% моего процессора. Я знаю, что это мой код, вызывающий это, но я не могу видеть, где.Слушатель сокета - УБИЙСТВО моего процессора, как улучшить производительность моего кода?
Это мой основной класс:
public class PortToDB {
ServerSocket serverSocket = null;
public void listenSocket(){
try{
serverSocket = new ServerSocket(50000);
} catch (IOException e) {
System.out.println("Could not listen on port 50000. " + e);
System.exit(-1);
}
while(true){
GPSData gd;
try{
gd = new GPSData(serverSocket.accept());
Thread t = new Thread(gd);
t.start();
} catch (IOException e) {
System.out.println("Accept failed: 50000. " + e);
System.exit(-1);
}
}
}
public static void main(String[] args) {
PortToDB portToDb = new PortToDB();
portToDb.listenSocket();
}
}
Это мой Runnable Класс:
class GPSData implements Runnable {
private Socket client;
DBHandler dbhandler = new DBHandler();
GPSData(Socket client) { this.client = client; }
public void run(){
String line;
BufferedReader in = null;
try{
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
} catch (IOException e) {
System.out.println("in or out failed");
System.exit(-1);
}
while(true){
try{
if((line = in.readLine()) != null){
dbhandler.dbInsert(line);
}
} catch (IOException e) {
System.out.println("Read failed");
System.exit(-1);
}
}
}
}
[Обзор кода] (http://codereview.stackexchange.com/) может помочь/лучше спросить. – Gyhth
Сколько потоков создается в целом, как часто и сколько работает одновременно? Используется ли высокая загрузка процессора сразу после некоторого использования? – hyde