GPS から送信されたデータを読み取るソケット リスナーを実装しましたが、CPU の 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();
}
}
これは私の実行可能なクラスです:
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);
}
}
}
}