Java socket和多线程(Thread)实例

欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入

  public void run(){

  while(true){

  try{

  // 循环map

  long currentTime = System.currentTimeMillis();

  for(String mapKey : map.keySet()){

  long oldTime = Long.parseLong(mapKey.substring(0, mapKey.indexOf(“_”)));

  System.out.println(“currentTime – oldTime=” + (currentTime – oldTime));

  if(currentTime – oldTime >= timeLimit){

  map.remove(mapKey);

  }

  }

  TimeUnit.MILLISECONDS.sleep(timeLimit);

  }catch(Exception e){

  throw new RuntimeException(e);

  }

  }

  }

  }

  服务器端辅助类:ServerHelper

  import java.util.Random;

  public class ServerHelper {

  // 单例

  private ServerHelper(){ }

  private final static ServerHelper helper = new ServerHelper();

  public static ServerHelper getInstance(){

  return helper;

  }

  // 构建map的key值

  public String getMapKey(){

  Random random = new Random();

  String mapKey = System.currentTimeMillis() + “_” + random.nextInt(1000);

  System.out.println(“map key: ” + mapKey);

  return mapKey;

  }

  }

  Client端:

  import java.io.BufferedReader;

  import java.io.InputStreamReader;

  import java.io.PrintWriter;

  import java.net.Socket;

  import java.util.concurrent.Executors;

  import java.util.concurrent.ExecutorService;

  public class ClientNet {

  public static void main(String[] args){

  try{

  Socket s = new Socket(“127.0.0.1”,6060);

  // 用于获取服务端传输来的信息

  BufferedReader buff = new BufferedReader(new InputStreamReader(s.getInputStream()));

  // 用于获取客户端准备响应的信息

  BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));

  // 发送客户端准备传输的信息

  PrintWriter printWriter = new PrintWriter(s.getOutputStream(),true);

  printWriter.println(“有客房端请求连接!”);

  // 客户端使用线程池连接服务端

  // ExecutorService executorService = Executors.newCachedThreadPool();

  // executorService.execute(new ClientOutNet(printWriter,bufferedReader));

  new ClientOutNet(printWriter,bufferedReader);

  while(true){ // 显示服务端的响应信息

  String str = buff.readLine();

  if(str != null){

  System.out.println(str);

  }

  // System.out.println(“To Server:”);

  Thread.sleep(100);

  }

  }catch(Exception e){

  e.printStackTrace();

  }

  }

  }

  /**

  * Client 发送线程 ,向服务端发送信息

  * @author ids-user

  */

  class ClientOutNet extends Thread{

  private PrintWriter printWriter;

  private BufferedReader bufferedReader;

  ClientOutNet(PrintWriter pw,BufferedReader in){

  this.printWriter = pw;

  this.bufferedReader=in;

  start();

  }

  public void run(){

  while(true){

  try{

  String inStr = bufferedReader.readLine();

  if(inStr.equals(“exit”)){

  printWriter.close();

  bufferedReader.close();

  break;

  }else{

  printWriter.println(“From Client: ” + inStr);

  }

  sleep(300);

  }catch(Exception e){

  printWriter = null;

  bufferedReader = null;

  throw new RuntimeException(e);

  }

  }

  }

  }

[1][2]

莫愁前路无知己,天下谁人不识君。

Java socket和多线程(Thread)实例

相关文章:

你感兴趣的文章:

标签云: