叶存菜鸟笔记多线程应用与echo案列

     1,、回顾多线程定义,继承类Thread,或者 实现Runnable接口,无论使用哪种方式,定要 覆写run()方法,最后在调用时,使用对象.start(),便可实现多线程运行程序。   

     2、在应用时和Echo经典案例相似,在需将哪个端口需要多线程时将其单独形成一个实现类。代码如下:

客户端:

import java.io.*;
import java.util.*;
import java.net.*;
public class EchoThreadApplication implements Runnable{        // 类实现Runnable接口,利用Runnable接口完成多线程
private Socket client=null;              //每一个client
public EchoThreadApplication(Socket client){
this.client=client;
}
public void run(){                           //覆写run()方法,没有什么不同 ,打印服务器程序

PrintStream out=null;
BufferedReader buf=null;
try{                              
buf=new BufferedReader(new InputStreamReader(client.getInputStream()));
out=new PrintStream(client.getOutputStream());
boolean flag=true;
while(flag){
String str=buf.readLine();
if(str==null||"".equals(str)){
flag=false;
}else{
if("bye".equals(str)){
flag=false;
}else{
out.println(str);
}
}
}
out.close();
client.close();
}catch(Exception e){
}
}
}

  服务器端:

import java.io.*;
import java.net.*;
public class EchoThreadServerApplication {
       public static void main(String args[])throws Exception{
      ServerSocket server=null;             //实例化服务器端接口
      Socket client=null;                        // 实例化客户端
      server=new ServerSocket(9999);
      boolean f=true;    
      while(f){
      System.out.println(" 服务器正在运行,等待客户端连接。");
      client=server.accept();                     //接收客户端链接
      new Thread(new EchoThreadApplication(client)).start();                        启动一个 线程运行client
      }
      server.close();
       }
}

你可能感兴趣的:(叶存菜鸟笔记多线程应用与echo案列)