java socket优化_Java Socket编程代码优化
1.問題:在學習Java的Socket編程,寫了一些代碼練習,但是又不知道是否規范,是否有優化的空間?
2.代碼:
package com.nekolr.socket;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.*;
/**
* @author nekolr
*/
public class TcpSocket {
static class TcpServer implements Runnable {
private int port = 8888;
@Override
public void run() {
try (
//創建服務端Socket,監聽端口
ServerSocket serverSocket = new ServerSocket(port)
) {
//打開監聽,等待客戶端的連接(在連接到來之前一直阻塞)
Socket socket = serverSocket.accept();
try (
//獲取輸入流(獲取客戶端的消息)
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is, "utf-8");
BufferedReader reader = new BufferedReader(isr)
) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println("客戶端" + socket.getInetAddress().getHostAddress() + "發送消息:" + line);
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
static class TcpClient implements Runnable {
private String host = "localhost";
private int port = 8888;
@Override
public void run() {
try (
//創建客戶端Socket,指定主機名和端口號
Socket socket = new Socket(host, port)
) {
try (
//獲取輸出流(向服務端發送消息)
OutputStream os = socket.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os, "utf-8");
BufferedWriter writer = new BufferedWriter(osw)
) {
int i = 0;
while (true) {
i++;
writer.write("hello" + i);
writer.newLine();
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
TcpServer tcpServer = new TcpServer();
TcpClient tcpClient = new TcpClient();
ThreadFactory factory = new ThreadFactoryBuilder().setNameFormat("thread-pool").build();
ExecutorService executor = new ThreadPoolExecutor(2, 2,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<>(1024), factory, new ThreadPoolExecutor.AbortPolicy());
executor.execute(tcpServer);
executor.execute(tcpClient);
}
}
總結
以上是生活随笔為你收集整理的java socket优化_Java Socket编程代码优化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java多线程区别_Java中实现多线程
- 下一篇: java 线程组作用_Java线程组(T