java线程池示例

    技术2022-07-10  147

    服务端

    import org.junit.Test; import java.io.*; import java.net.ServerSocket; import java.net.Socket; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.atomic.AtomicInteger; public class TestTcpServer { private static ExecutorService executor = Executors.newFixedThreadPool(5); private static AtomicInteger count = new AtomicInteger(); public static void main(String[] args) throws ClassNotFoundException { ServerSocket ss = null; Socket s = null; try { ss = new ServerSocket(8989); System.out.println("服务端已经启动..."); while (true) { int id = count.getAndAdd(1); executor.execute(new ServerTask(id, ss.accept())); System.out.println("执行一次响应.." + id); } } catch (IOException e) { e.printStackTrace(); } finally { if (ss != null) { try { ss.close(); } catch (IOException ioe) { ioe.printStackTrace(); } } } } } class ServerTask implements Runnable { private Integer id; private Socket socket; public ServerTask(Integer id, Socket socket) { this.id = id; this.socket = socket; } public void run() { ObjectOutputStream os = null; ObjectInputStream is = null; try { is = new ObjectInputStream(socket.getInputStream()); TransportObject transportObject = (TransportObject) is.readObject(); System.out.println(transportObject.toString() + "任务标记:" + id); transportObject = (TransportObject) is.readObject(); System.out.println(transportObject.toString() + "任务标记:" + id); os = new ObjectOutputStream(socket.getOutputStream()); os.writeObject(new TransportObject(1, "我是客户端!")); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } finally { if (os != null) { try { os.close(); } catch (IOException e) { e.printStackTrace(); } } if (is != null) { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } if (socket != null) { try { socket.close(); } catch (IOException e) { e.printStackTrace(); } } } } }

    客户端

    import org.junit.Test; import java.io.*; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; import java.net.UnknownHostException; import java.util.Random; public class TestTcpClient { public static void main(String[] args) throws ClassNotFoundException, InterruptedException { for (int i = 0; i < 6; i++) { new Thread() { @Override public void run() { while (true) { try { send(); Thread.sleep(100); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } } } .start(); } } private static void send() throws ClassNotFoundException { Socket socket = null; ObjectOutputStream os = null; ObjectInputStream is = null; try { socket = new Socket(InetAddress.getByName("127.0.0.1"), 8989); os = new ObjectOutputStream(socket.getOutputStream()); os.writeObject(new TransportObject(2, "我是客户端1!")); os.writeObject(new TransportObject(3, "我是客户端2!")); // shutdownOutput():执行此方法,显示的告诉服务端发送完毕 socket.shutdownOutput(); is = new ObjectInputStream(socket.getInputStream()); TransportObject transportObject = (TransportObject) is.readObject(); System.out.println(transportObject.toString()); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (is != null) { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } if (os != null) { try { os.close(); } catch (IOException e) { e.printStackTrace(); } } if (socket != null) { try { socket.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
    Processed: 0.009, SQL: 9