请设计一个简单的Java服务,用多线程处理请求。

原创 矫情吗;* 2025-03-23 22:54 95阅读 0赞

以下是一个简单的Java服务,使用多线程处理HTTP请求。这个示例服务接收GET请求,并返回一个随机的欢迎消息。

  1. import java.io.*;
  2. import java.net.ServerSocket;
  3. import java.net.Socket;
  4. import java.util.concurrent.ExecutorService;
  5. import java.util.concurrent.Executors;
  6. public class MultiThreadedHttpServer {
  7. private static final int PORT = 8080;
  8. private ExecutorService executorService;
  9. public MultiThreadedHttpServer() {
  10. executorService = Executors.newFixedThreadPool(10); // Adjust the number of threads according to your system resources
  11. }
  12. public void startServer() throws IOException {
  13. ServerSocket serverSocket = new ServerSocket(PORT);
  14. System.out.println("HTTP server started on port " + PORT);
  15. while (true) {
  16. Socket clientSocket = serverSocket.accept();
  17. executorService.execute(new RequestHandler(clientSocket)));
  18. }
  19. }
  20. private class RequestHandler implements Runnable {
  21. private Socket socket;
  22. public RequestHandler(Socket socket) {
  23. this.socket = socket;
  24. }
  25. @Override
  26. public void run() {
  27. try (BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())))) {
  28. String request = br.readLine(); // Read the HTTP request from client
  29. // Handle the request and generate a response
  30. int randomIndex = (int) Math.random() * 10; // Generate a random index between 0 and 9
  31. String welcomeMessage = "Welcome to MultiThreaded HTTP Server! Random Index: " + randomIndex;
  32. OutputStream os = socket.getOutputStream();
  33. BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"))); // Set the output encoding to UTF-8
  34. bw.write("HTTP/1.1 200 OK\n"); // Send the HTTP response header
  35. bw.write(welcomeMessage + "\n\n"); // Write the welcome message and ending line break
  36. bw.flush(); // Ensure that the response is sent immediately
  37. } catch (IOException e) {
  38. System.err.println("Error handling request: " + e.getMessage());
  39. } finally {
  40. if (socket != null) { // Make sure to close the socket properly
  41. socket.close();
  42. }
  43. }
  44. }
  45. }
  46. public static void main(String[] args) throws IOException {
  47. MultiThreadedHttpServer httpServer = new MultiThreadedHttpServer();
  48. httpServer.startServer(); // Start serving HTTP requests
  49. }
  50. }

这个服务会监听8080端口,对于每一个HTTP GET请求,都会创建一个新的线程来处理这个请求。服务器会生成随机欢迎消息作为响应,并关闭连接。

文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (有 0 条评论,95人围观)

还没有评论,来说两句吧...

相关阅读