日期:2014-05-20  浏览次数:20813 次

关于java多线程编程的问题??
我现在已经写好了一个在线客服机器人的接口,该接口的功能是接受一个String input,返回一个String response。为了让问题清楚一点,我把这个接口抽象成一个类:
Java code

class chart{
     private String input="";
     public String myRobot(String input){
           String response=""; 
           //.....(具体的实现)
           return response;
     }
}



现在就是说,实例化chart这个类,然后调用里面的myRobot方法就能聊天。

但是,假如我要把这个接口用到网站上去。我们知道肯定会有很多用户同时使用在线客服机器人这个功能,那么就是多线程了。我想在这个类上面在套一层多线程代码,而我又不知道需要什么信息来触发程序new 一个线程,以及向这样的多线程应该注意什么问题??我没有多线程编程的经验,能否指导一下,万分感谢!!!

------解决方案--------------------
将这个类每次都new就可以了。
------解决方案--------------------
这里有二种设计需要你来进行选择:
1、每有一个接入的用户,就让他和一个机器人对答
2、如果接入用户过多,则应进行等待,等待有空闲机器人。

如果机器人程序很庞大,同时您的服务器机器硬件条件并不是很充裕,则应选择第二种设计方案。否则应该第 1 种。

对于第 1 种设计,因为是网站,所以最终应该是通过 Servlet 标准的 service() 方法来响应启动的:
Java code

puboic void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
{
  // 首先,这里应从 req 中拆解出 input 字符串
  chart robot = new chart();
  String response = robot.myRobot(input);
  // 最后,将 response 进行包装,通过 resp 输出到客户端(浏览器)
}

------解决方案--------------------
用多线程,最要注意的就是,你用到了全局变量,多线程访问时,你的全局变量会给你找麻烦的,要用到同步哦
------解决方案--------------------
探讨
用多线程,最要注意的就是,你用到了全局变量,多线程访问时,你的全局变量会给你找麻烦的,要用到同步哦