java socket优化_Java Socket编程代码优化
1.問(wèn)題:在學(xué)習(xí)Java的Socket編程,寫(xiě)了一些代碼練習(xí),但是又不知道是否規(guī)范,是否有優(yōu)化的空間?
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 (
//創(chuàng)建服務(wù)端Socket,監(jiān)聽(tīng)端口
ServerSocket serverSocket = new ServerSocket(port)
) {
//打開(kāi)監(jiān)聽(tīng),等待客戶端的連接(在連接到來(lái)之前一直阻塞)
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() + "發(fā)送消息:" + 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 (
//創(chuàng)建客戶端Socket,指定主機(jī)名和端口號(hào)
Socket socket = new Socket(host, port)
) {
try (
//獲取輸出流(向服務(wù)端發(fā)送消息)
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);
}
}
總結(jié)
以上是生活随笔為你收集整理的java socket优化_Java Socket编程代码优化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java多线程区别_Java中实现多线程
- 下一篇: java 线程组作用_Java线程组(T