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多线程服务器相关使用的介绍。希望大家有所收获。

文章标题:Java多线程服务器如何进行组建和修改
URL地址:http://www.shufengxianlan.com/qtweb/news43/457743.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联