Java多线程服务器如何进行组建和修改

开发 后端
Java多线程服务器如何才能更好的进行相关服务?这个就需要广大的程序员不断的进行相关知识的学习,希望大家有所收获。

Java多线程服务器一直是我们不断的研究和创新的技术,下面我们就来看看如何才能更好的使用相关服务。们的Java多线程服务器研究完了。在我们接着讨论带有连接池示例之前,让我们回顾一下创建和使用“多线程版”的服务器的步骤:

修改 acceptConnections() 以用缺省为 50(或任何您想要的大于 1 的指定数字)实例化 ServerSocket 。

修改 ServerSocket 的 handleConnection() 以用 ConnectionHandler 的一个实例生成一个新的 Thread 。


借用 RemoteFileServer 的 handleConnection() 方法的代码实现 ConnectionHandler 类。
附: MultithreadedRemoteFileServer 的完整代码清单

Java代码

  1. import java.io.*;   
  2. import java.net.*;   
  3. public class MultithreadedRemoteFileServer {   
  4. protected int listenPort;   
  5. public MultithreadedRemoteFileServer(int aListenPort) {   
  6. listenPort = aListenPort;   
  7. }   
  8. public void acceptConnections() {   
  9. try {   
  10. ServerSocket server = new ServerSocket(listenPort, 5);   
  11. Socket incomingConnection = null;   
  12. while (true) {   
  13. incomingConnection = server.accept();   
  14. handleConnection(incomingConnection);   
  15. }   
  16. }catch (BindException e) {   
  17. System.out.println("Unable to bind to port " + listenPort);   
  18. } catch (IOException e) {   
  19. System.out.println("Unable to instantiate a ServerSocket on port: " + listenPort);   
  20. }   
  21. }   
  22. public void handleConnection(Socket connectionToHandle) {   
  23. new Thread(new ConnectionHandler(connectionToHandle)).start();   
  24. }   
  25. public static void main(String[] args) {   
  26. MultithreadedRemoteFileServer server = new MultithreadedRemoteFileServer(3000);   
  27. server.acceptConnections();   
  28. }   
  29. }   
  30. import java.io.*;  
  31. import java.net.*;  
  32. public class MultithreadedRemoteFileServer {  
  33. protected int listenPort;  
  34. public MultithreadedRemoteFileServer(int aListenPort) {  
  35. listenPort = aListenPort;  
  36. }  
  37. public void acceptConnections() {  
  38. try {  
  39. ServerSocket server = new ServerSocket(listenPort, 5);  
  40. Socket incomingConnection = null;  
  41. while (true) {  
  42. incomingConnection = server.accept();  
  43. handleConnection(incomingConnection);  
  44. }  
  45. } catch (BindException e) {  
  46. System.out.println("Unable to bind to port " + listenPort);  
  47. } catch (IOException e) {  
  48. System.out.println("Unable to instantiate a ServerSocket on port: " + listenPort);  
  49. }  
  50. }  
  51. public void handleConnection(Socket connectionToHandle) {  
  52. new Thread(new ConnectionHandler(connectionToHandle)).start();  
  53. }  
  54. public static void main(String[] args) {  
  55. MultithreadedRemoteFileServer server = new MultithreadedRemoteFileServer(3000);  
  56. server.acceptConnections();  
  57. }  
  58. }  

ConnectionHandler 的完整代码清单

Java代码

  1. import java.io.*;   
  2. import java.net.*;   
  3. public class ConnectionHandler implements Runnable {   
  4. protected Socket socketToHandle;   
  5. public ConnectionHandler(Socket aSocketToHandle) {   
  6. socketToHandle = aSocketToHandle;   
  7. }   
  8. public void run() {   
  9. try {   
  10. PrintWriter streamWriter = new PrintWriter(socketToHandle.getOutputStream());   
  11. BufferedReader streamReader = new BufferedReader(new InputStreamReader(socketToHandle.getInputStream()));   
  12. String fileToRead = streamReader.readLine();   
  13. BufferedReader fileReader = new BufferedReader(new FileReader(fileToRead));   
  14. String line = null;   
  15. while ((line = fileReader.readLine()) != null)   
  16. streamWriter.println(line);   
  17. fileReader.close();   
  18. streamWriter.close();   
  19. streamReader.close();   
  20. } catch (Exception e) {   
  21. System.out.println("Error handling a client: " + e);   
  22. }   
  23. }   
  24. }  

以上就是对Java多线程服务器相关使用的介绍。希望大家有所收获。

【编辑推荐】

  1. Java多线程程序如何掌握基本语法
  2. Java多线程同步具体实例讲解
  3. Java多线程语句具体分类的详细介绍
  4. Java多线程优化之偏向锁原理分析
  5. Java多线程初学者指南系列教程
责任编辑:张浩 来源: IT168网站
相关推荐

2010-08-03 15:31:42

Ubuntu NFS服

2011-07-25 10:48:34

服务器虚拟服务器

2010-03-19 14:01:55

Java Socket

2010-03-16 17:39:36

Java多线程锁

2010-03-17 18:21:54

Java多线程静态数据

2011-07-14 14:58:19

网络服务器配置服务器

2009-08-21 16:13:45

代理服务器设置迅雷

2010-03-18 19:39:44

Java Socket

2010-03-16 10:32:36

Java线程拨号器

2010-03-16 10:50:21

Java多线程服务器

2011-10-26 11:21:47

服务器虚拟化存储管理

2010-06-02 18:51:35

搭建SVN服务器

2011-07-04 10:20:25

服务器云时代

2011-06-29 10:06:23

Linux服务器优化

2017-08-04 10:47:20

2018-07-20 10:12:27

租用服务器速度测试

2011-08-02 16:46:33

FoxmailServ邮件服务器域管理

2012-12-03 14:21:02

服务器群集

2010-03-17 17:54:25

java Socket

2009-02-18 10:41:16

多线程服务器稳定Java
点赞
收藏

51CTO技术栈公众号