java解惑――易错知识点归纳总结 (八)

2014-11-24 09:26:36 · 作者: · 浏览: 13

      } //继续循环
      os.close(); //关闭Socket输出流
      is.close(); //关闭Socket输入流
      socket.close(); //关闭Socket
      server.close(); //关闭ServerSocket
     }catch(Exception e){
      System.out.println("Error:"+e);
      //出错,打印出错信息
     }
   }
 }

  import java.io.*;
  import java.net.*;
  public class ServerThread extends Thread{
   Socket socket=null; //保存与本线程相关的Socket对象
   int clientnum; //保存本进程的客户计数
   public ServerThread(Socket socket,int num) { //构造函数
    this.socket=socket; //初始化socket变量
    clientnum=num+1; //初始化clientnum变量
   }
   public void run() { //线程主体
    try{
      String line;
      BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
  //由Socket对象得到输入流,并构造相应的BufferedReader对象
      PrintWriter os=newPrintWriter(socket.getOutputStream());
      //由Socket对象得到输出流,并构造PrintWriter对象
      BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
      //由系统标准输入设备构造BufferedReader对象
      System.out.println("Client:"+ clientnum +is.readLine());
      //在标准输出上打印从客户端读入的字符串
      line=sin.readLine();
      //从标准输入读入一字符串
      while(!line.equals("bye")){

      //如果该字符串为 "bye",则停止循环
        os.println(line);
        //向客户端输出该字符串
        os.flush();
        //刷新输出流,使Client马上收到该字符串
        System.out.println("Server:"+line);
        //在系统标准输出上打印该字符串
        System.out.println("Client:"+ clientnum +is.readLine());
        //从Client读入一字符串,并打印到标准输出上
        line=sin.readLine();
        //从系统标准输入读入一字符串
      } //继续循环
      os.close(); //关闭Socket输出流
      is.close(); //关闭Socket输入流
      socket.close(); //关闭Socket
      server.close(); //关闭ServerSocket
     }catch(Exception e){
      System.out.println("Error:"+e);
      //出错,打印出错信息
     }
   }
 }

十九.资源池的理解
1.资源池引入的目的(好处)
提高性能
2.资源池运作机制
由资源池管理器提供一定数目的目标资源,当有请求该资源时,资源池分配给一个,然后给该资源标识为忙,标示为忙的资源不能再被分配使用,当某一个资源使用完后,资源池把相关的资源的忙标示清除掉,以示该资源可以再被下一个请求使用
3.资源池常有的参数
1.初始资源的数目:资源池启动时,一次建立的资源数目,资源池最少要保证在这个数目上
2.最大资源的数目:当请求的资源超出这个数目,就等待
4.常见的资源池
1.数据库连接池
2.web容器中的request,response对象池
3.web容器中的线程池