【问题标题】:Java server multithreading [closed]Java服务器多线程[关闭]
【发布时间】:2013-02-27 08:18:00
【问题描述】:

如何用Java实现多线程服务器?服务器侦听端口(例如 5000)并在单独的线程中提供连接并继续侦听更多客户端。

【问题讨论】:

    标签: java multithreading sockets networking client-server


    【解决方案1】:

    这是一个典型的例子:

    ServerSocket ss = new ServerSocket(port);
    ExecutorService executor = Executors.newCachedThreadPool();
    
    while(true)
    {
        Socket s = ss.accept();
        Runnable r = new TaskImplementsRunnable(s);
        executor.submit(r)
    }
    
    public class TaskImplementsRunnable implements Runnable
    {
        private Socket socket;
    
        public TaskImplementsRunnable(Socket socket)
        {
            this.socket = socket;
        }
    
        @Override
        public void run()
        {
            try
            {
                PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);
                BufferedReader reader = new BufferedReader(new  InputStreamReader(socket.getInputStream()));
    
                String command;
                while((command = reader.readLine()) != null)
                {
                    if(command.equalsIgnoreCase("command 1"))
                    {
                        writer.println("This is command 1!");
                    }
                    else if(command.equalsIgnoreCase("command 2"))
                    {
                        writer.println("This is command 2!");
                    }
                    else if(command.equalsIgnoreCase("exit"))
                    {
                        break;
                    }
                    else
                    {
                        writer.println("This is unknown command!");
                    }
                }
            }
            catch(IOException e)
            {
                e.printStackTrace();
            }
    
            try
            {
                writer.close();
                reader.close();
            }
            catch(IOException e){}
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-05
      • 1970-01-01
      • 2010-11-29
      • 2014-03-29
      • 2019-05-27
      • 2015-02-10
      • 1970-01-01
      相关资源
      最近更新 更多