全部放到队列里面,你想过性能的问题么?而数据库的session本身就是一个请求对应一个connection的,如果真的要这样做队列,你可以用java.util.concurrent.ConcurrentLinkedQueue等类似的容器,来限制数据库连接池中的connection数量。

解决方案 »

  1.   

    我明白一个session对应一个conn,但是当多个请求并发,超过数据库连接池最大连接数量,该怎么处理额?同时多个对数据库请求如果不使用这种队列的形式该怎么做?第二个问题就是如果我想实现一个后台的持续维护的线程,应该怎么在ssh里设定呢?
    比如每隔一分钟,在控制台打印当前在线用户数量,在ssh里面应该在那里做?我迷惑在我感觉ssh的框架是针对用户的http请求的,每个请求开一个对应的线程,请求结束线程终止,但是我想对项目实现一个一直在后台运行的程序该怎么做?ssh里有没有对应的机制?
      

  2.   

    我明白一个session对应一个conn,但是当多个请求并发,超过数据库连接池最大连接数量,该怎么处理额?同时多个对数据库请求如果不使用这种队列的形式该怎么做?第二个问题就是如果我想实现一个后台的持续维护的线程,应该怎么在ssh里设定呢?
    比如每隔一分钟,在控制台打印当前在线用户数量,在ssh里面应该在那里做?我迷惑在我感觉ssh的框架是针对用户的http请求的,每个请求开一个对应的线程,请求结束线程终止,但是我想对项目实现一个一直在后台运行的程序该怎么做?ssh里有没有对应的机制?
    并发数超过连接池数,会等待,直到分配到链接或者超时。
    定时任务,可以查看Quartz 的配置案例。
      

  3.   

    我明白一个session对应一个conn,但是当多个请求并发,超过数据库连接池最大连接数量,该怎么处理额?同时多个对数据库请求如果不使用这种队列的形式该怎么做?第二个问题就是如果我想实现一个后台的持续维护的线程,应该怎么在ssh里设定呢?
    比如每隔一分钟,在控制台打印当前在线用户数量,在ssh里面应该在那里做?我迷惑在我感觉ssh的框架是针对用户的http请求的,每个请求开一个对应的线程,请求结束线程终止,但是我想对项目实现一个一直在后台运行的程序该怎么做?ssh里有没有对应的机制?
    并发数超过连接池数,会等待,直到分配到链接或者超时。
    定时任务,可以查看Quartz 的配置案例。学习了....
    我还想问下,那是不是说对于线程并发的具体管理和实现是不是就属于服务器的范畴了,ssh项目中已经不涉及到了?
      

  4.   

    发送请求的并发,服务器会控制,但是我们能做的也有很多,比如如何优化程序效率,如何正确关闭相关资源(如数据、socket、文件),这样缩短一次请求的响应时间,也是变相提高的服务器的性能。
    另外,如果代码里真的会启动多线程处理一些并发任务,需要慎重处理好一些公共变量、资源的使用,比如一些java自带的,线程不安全的类,我们在并发使用的时候,要注意选择(如ArrayList,SimpleDateFormat等)。所以,你那句话是不对的。与其这么想,不如索性每次开发的时候(不论是否使用SSH),都严谨的考虑下线程问题,在思考下自己使用的框架、平台,是否解决请求并发问题。嗯,说的有点乱,希望有所帮助。
      

  5.   

    发送请求的并发,服务器会控制,但是我们能做的也有很多,比如如何优化程序效率,如何正确关闭相关资源(如数据、socket、文件),这样缩短一次请求的响应时间,也是变相提高的服务器的性能。
    另外,如果代码里真的会启动多线程处理一些并发任务,需要慎重处理好一些公共变量、资源的使用,比如一些java自带的,线程不安全的类,我们在并发使用的时候,要注意选择(如ArrayList,SimpleDateFormat等)。所以,你那句话是不对的。与其这么想,不如索性每次开发的时候(不论是否使用SSH),都严谨的考虑下线程问题,在思考下自己使用的框架、平台,是否解决请求并发问题。嗯,说的有点乱,希望有所帮助。谢谢耐心回答,学到很多哈...