java 服务器线程池测试
生活随笔
收集整理的這篇文章主要介紹了
java 服务器线程池测试
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ncat 有個允許多客戶端連接的參數,默認是100,我用線程池實現了類似的功能。
創建服務器線程池大小為100,可以同時處理100個連接,第100個往后的客戶端需要等待前100個客戶端有退出,它才能連上。
Server.java
Client.java
import java.io.*; import java.net.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;public class Server {static ExecutorService executorService;static ServerSocket serverSocket;static Socket socket;static SocketAddress socketAddress;public static void main(String[] args) throws IOException {socketAddress = new InetSocketAddress(InetAddress.getByName("0.0.0.0"), 6000);serverSocket = new ServerSocket();serverSocket.bind(socketAddress);executorService = Executors.newFixedThreadPool(100);// 監聽線程new Thread(new Runnable() {@Overridepublic void run() {try {while (true) {socket = serverSocket.accept();System.out.println(socket.getRemoteSocketAddress().toString());Thread clientThread = new ClientThread(socket);executorService.execute(clientThread);}} catch (IOException e) {e.printStackTrace();}}}).start();} }class ClientThread extends Thread {static int num = 0;Socket socket;public ClientThread(Socket socket) {this.socket = socket;}@Overridepublic void run() {try {DataInputStream in = new DataInputStream(new BufferedInputStream(socket.getInputStream()));DataOutputStream out = new DataOutputStream(new BufferedOutputStream(socket.getOutputStream()));String s = "你是第 " + (++num) + " 個客戶端\n";out.write((s.getBytes()));out.flush();byte[] buffer = new byte[1024];while ((in.read(buffer)) != -1) {System.out.println(new String(buffer));}} catch (IOException e) {e.printStackTrace();}} }總結
以上是生活随笔為你收集整理的java 服务器线程池测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 修改toolbar菜单i
- 下一篇: java 大数运算