服务端
public class ServerThread extends Thread{
private Socket socket;
private static ExecutorService es =Executors.newCachedThreadPool();
public ServerThread(Socket socket) {
super();
this.socket = socket;
}
private static class ServerHolder{
private static final int PORT =11222;
private static ServerSocket server;
static{
try {
server=new ServerSocket(PORT);
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static ServerSocket getServerSocket(){
return ServerHolder.server;
}
@Override
public void run() {
InputStreamReader inputStreamReader;
BufferedReader bufferedReader;
try {
inputStreamReader = new InputStreamReader(socket.getInputStream());
bufferedReader = new BufferedReader(inputStreamReader);
String request = bufferedReader.readLine();
System.out.println("接收到了客户端的请求:"+request);
PrintWriter printWriter = new PrintWriter(socket.getOutputStream());
String advice = "I am Server";
printWriter.println(advice);
printWriter.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
ServerSocket server = getServerSocket();
System.out.println("服务器启动...");
try {
while (true) {
Socket socket = server.accept();
es.execute(new ServerThread(socket));
}
} catch (Exception e) {
e.printStackTrace();
}finally{
server.close();
}
}
}
客户端
public class ClientThread extends Thread {
private static AtomicLong count=new AtomicLong(0);
@Override
public void run() {
Socket client = null;
try {
client = new Socket("127.0.0.1", 11222);
PrintWriter printWriter = new PrintWriter(client.getOutputStream());
printWriter.println("hello Server");
printWriter.flush();
InputStreamReader streamReader = new InputStreamReader(client.getInputStream());
BufferedReader reader = new BufferedReader(streamReader);
String advice =reader.readLine();
count.incrementAndGet();
System.out.println("接收到服务器的消息 :"+advice);
Thread.sleep(new Random().nextInt(3000));
} catch (Exception e) {
e.printStackTrace();
}finally {
if(null!=client){
try {
client.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) throws Exception {
long s = System.currentTimeMillis();
List<Thread> threads=new ArrayList<Thread>();
for (int i = 0; i <1000; i++) {
ClientThread thread = new ClientThread();
thread.start();
threads.add(thread);
}
for (Thread thread : threads) {
thread.join();
}
System.out.println("耗时:"+(System.currentTimeMillis()-s)/1000+"秒");
System.out.println(count);
}
}