解决方案 »

  1.   

    struts2的action本来就是多例的。所以是多线程的
      

  2.   

    知道是多线程的,为的是action中发出一个请求,而页面直接返回,不需要等待action中数据的加载。如果等action中所有要查询的数据加载完,那样速度就会很慢,所有想利用多线程,解决这个问题
      

  3.   

    按你的说法,你要实现的效果应该是异步,而不是多线程,看看ajax吧
      

  4.   

    确实是异步,不过用Ajax,js过多不利于百度搜索引擎的抓取?
      

  5.   

    struts1是单例模式。。所以是单线程的。。 struts2不是单例模式每个session单独共享一个线程  所以就是多线程的。
      

  6.   

    问题解决了,我在action中用到了线程池,解决页面跳转过慢的问题。
      

  7.   

    绝对是不好的实现,web编程不应该使用那么“底层”的方法,你应该使用ajax。
      

  8.   

    /* 多线程从多个接口获取查询数据 */
    ExecutorService pool = Executors.newFixedThreadPool(1); //创建线程池
    Callable<List> rmCallable = new RoadRunCallable(criteria,SqlConstants.GET_TRAVELS_LIST);
    Future<List> rmfuture = pool.submit(rmCallable);
    pool.shutdown(); //关闭线程池public class RoadRunCallable implements Callable<List> { private PageQueryCriteria critria;
    private String statementName;

    public RoadRunCallable(PageQueryCriteria critria,String statementName){
    this.critria = critria;
    this.statementName = statementName;
    }

    @Override
    public List call() throws Exception {
    Query query = (Query)ServiceLocator.getService("query");
    return query.queryForList(statementName, critria);
    }}
      

  9.   

    是用分页做了。页面用ajax无刷新实现数据加载,但是页面多显示js代码或是动态的填充层,这样不利于蜘蛛的抓取。改用了页面跳转的时候在action中加载数据,然后跳转至页面,不过这样速度比较慢,在action中加了一个线程池效果还是不太理想,怎么办???
      

  10.   

    楼主是想问servelet3中的AsyncContext么?不过好象struts2的ActionContext.getContext()都是绑定线程的,一年多前试过,startAsync后strtus2自己返回了,但页面还是不会返回,直到complete,但struts2就不管这些数据了,而且异步执行的线程里取不到ActionContext,对了,我还是用nio请求第三方数据的,因为第三方返回慢,经常要几秒,甚至十秒都有,如果不用nio+servlet3就导致线程很多,这样只是连接多。当时为解决这些看struts2源码,写插件改好久。不知道现在的strust2有没有解决