Java多線程服務(wù)器如何進(jìn)行組建和修改
Java多線程服務(wù)器一直是我們不斷的研究和創(chuàng)新的技術(shù),下面我們就來看看如何才能更好的使用相關(guān)服務(wù)。們的Java多線程服務(wù)器研究完了。在我們接著討論帶有連接池示例之前,讓我們回顧一下創(chuàng)建和使用“多線程版”的服務(wù)器的步驟:
修改 acceptConnections() 以用缺省為 50(或任何您想要的大于 1 的指定數(shù)字)實(shí)例化 ServerSocket 。
修改 ServerSocket 的 handleConnection() 以用 ConnectionHandler 的一個(gè)實(shí)例生成一個(gè)新的 Thread 。
借用 RemoteFileServer 的 handleConnection() 方法的代碼實(shí)現(xiàn) ConnectionHandler 類。
附: MultithreadedRemoteFileServer 的完整代碼清單
Java代碼
- import java.io.*;
- import java.net.*;
- public class MultithreadedRemoteFileServer {
- protected int listenPort;
- public MultithreadedRemoteFileServer(int aListenPort) {
- listenPort = aListenPort;
- }
- public void acceptConnections() {
- try {
- ServerSocket server = new ServerSocket(listenPort, 5);
- Socket incomingConnection = null;
- while (true) {
- incomingConnection = server.accept();
- handleConnection(incomingConnection);
- }
- }catch (BindException e) {
- System.out.println("Unable to bind to port " + listenPort);
- } catch (IOException e) {
- System.out.println("Unable to instantiate a ServerSocket on port: " + listenPort);
- }
- }
- public void handleConnection(Socket connectionToHandle) {
- new Thread(new ConnectionHandler(connectionToHandle)).start();
- }
- public static void main(String[] args) {
- MultithreadedRemoteFileServer server = new MultithreadedRemoteFileServer(3000);
- server.acceptConnections();
- }
- }
- import java.io.*;
- import java.net.*;
- public class MultithreadedRemoteFileServer {
- protected int listenPort;
- public MultithreadedRemoteFileServer(int aListenPort) {
- listenPort = aListenPort;
- }
- public void acceptConnections() {
- try {
- ServerSocket server = new ServerSocket(listenPort, 5);
- Socket incomingConnection = null;
- while (true) {
- incomingConnection = server.accept();
- handleConnection(incomingConnection);
- }
- } catch (BindException e) {
- System.out.println("Unable to bind to port " + listenPort);
- } catch (IOException e) {
- System.out.println("Unable to instantiate a ServerSocket on port: " + listenPort);
- }
- }
- public void handleConnection(Socket connectionToHandle) {
- new Thread(new ConnectionHandler(connectionToHandle)).start();
- }
- public static void main(String[] args) {
- MultithreadedRemoteFileServer server = new MultithreadedRemoteFileServer(3000);
- server.acceptConnections();
- }
- }
ConnectionHandler 的完整代碼清單
Java代碼
- import java.io.*;
- import java.net.*;
- public class ConnectionHandler implements Runnable {
- protected Socket socketToHandle;
- public ConnectionHandler(Socket aSocketToHandle) {
- socketToHandle = aSocketToHandle;
- }
- public void run() {
- try {
- PrintWriter streamWriter = new PrintWriter(socketToHandle.getOutputStream());
- BufferedReader streamReader = new BufferedReader(new InputStreamReader(socketToHandle.getInputStream()));
- String fileToRead = streamReader.readLine();
- BufferedReader fileReader = new BufferedReader(new FileReader(fileToRead));
- String line = null;
- while ((line = fileReader.readLine()) != null)
- streamWriter.println(line);
- fileReader.close();
- streamWriter.close();
- streamReader.close();
- } catch (Exception e) {
- System.out.println("Error handling a client: " + e);
- }
- }
- }
以上就是對Java多線程服務(wù)器相關(guān)使用的介紹。希望大家有所收獲。
【編輯推薦】