关于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 输出到客户端(浏览器)
}
------解决方案--------------------
用多线程,最要注意的就是,你用到了全局变量,多线程访问时,你的全局变量会给你找麻烦的,要用到同步哦
------解决方案--------------------