下面我按从易到难的思路,给你讲 Java 网络 + 多线程 的常见用法,并配合示例代码,适合入门到实战。
Java 网络编程主要用:
java.net.Socket:TCP 客户端java.net.ServerSocket:TCP 服务端java.net.HttpURLConnection(或 HttpClient):HTTP 请求常用方式:
ThreadRunnableCallableExecutorService(推荐)ServerSocket server = new ServerSocket(8888);
Socket socket = server.accept(); // 阻塞
Socket socket = new Socket("localhost", 8888);
⚠️ 问题:只能处理一个客户端
每来一个客户端,就开一个线程处理
import java.io.*;
import java.net.*;
public class MultiThreadServer {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(8888);
System.out.println("服务器启动...");
while (true) {
Socket socket = server.accept();
new ClientHandler(socket).start();
}
}
static class ClientHandler extends Thread {
private Socket socket;
ClientHandler(Socket socket) {
this.socket = socket;
}
public void run() {
try (
BufferedReader in = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(
socket.getOutputStream(), true)
) {
String msg;
while ((msg = in.readLine()) != null) {
System.out.println("收到:" + msg);
out.println("服务器回复:" + msg);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Socket socket = new Socket("localhost", 8888);
BufferedReader in = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(
socket.getOutputStream(), true);
out.println("Hello Server");
System.out.println(in.readLine());
socket.close();
避免线程爆炸
ExecutorService pool = Executors.newCachedThreadPool();
while (true) {
Socket socket = server.accept();
pool.execute(new ClientHandler(socket));
}
✅ 优点:
ExecutorService pool = Executors.newFixedThreadPool(10);
for (int i = 0; i < 100; i++) {
pool.execute(() -> {
try {
URL url = new URL("https://example.com");
HttpURLConnection conn =
(HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
System.out.println(conn.getResponseCode());
} catch (Exception e) {
e.printStackTrace();
}
});
}
pool.shutdown();
❌ 1. 忘记 flush() / close()
❌ 2. 用 read() 阻塞导致线程卡死
❌ 3. 多线程共享变量没加锁
❌ 4. 客户端不按协议发送数据
✅ 聊天室
✅ 游戏服务器
✅ 接口并发测试
✅ 文件传输
✅ 网络爬虫
如果你愿意,我可以:
你现在是学习阶段还是做项目?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。