struts2的action怎样实现多线程? struts2action多线程异步同步 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 struts2的action本来就是多例的。所以是多线程的 知道是多线程的,为的是action中发出一个请求,而页面直接返回,不需要等待action中数据的加载。如果等action中所有要查询的数据加载完,那样速度就会很慢,所有想利用多线程,解决这个问题 按你的说法,你要实现的效果应该是异步,而不是多线程,看看ajax吧 确实是异步,不过用Ajax,js过多不利于百度搜索引擎的抓取? struts1是单例模式。。所以是单线程的。。 struts2不是单例模式每个session单独共享一个线程 所以就是多线程的。 问题解决了,我在action中用到了线程池,解决页面跳转过慢的问题。 绝对是不好的实现,web编程不应该使用那么“底层”的方法,你应该使用ajax。 /* 多线程从多个接口获取查询数据 */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); }} 是用分页做了。页面用ajax无刷新实现数据加载,但是页面多显示js代码或是动态的填充层,这样不利于蜘蛛的抓取。改用了页面跳转的时候在action中加载数据,然后跳转至页面,不过这样速度比较慢,在action中加了一个线程池效果还是不太理想,怎么办??? 楼主是想问servelet3中的AsyncContext么?不过好象struts2的ActionContext.getContext()都是绑定线程的,一年多前试过,startAsync后strtus2自己返回了,但页面还是不会返回,直到complete,但struts2就不管这些数据了,而且异步执行的线程里取不到ActionContext,对了,我还是用nio请求第三方数据的,因为第三方返回慢,经常要几秒,甚至十秒都有,如果不用nio+servlet3就导致线程很多,这样只是连接多。当时为解决这些看struts2源码,写插件改好久。不知道现在的strust2有没有解决 Tomcat32位怎么才能跟MyEclipse9兼容啊求助啊 请问一个sql异常 求用JSP编写一个获取验证码的源码。。。 weblogic问题求助! SQL Server数据库连接 Bean 问题?? http访问的文件时的字母大小写出现的错误 连接数据库异常问题 请回复过此贴的进来领分!“加了一句代码之后问题多多,<%@ page errorPage=index1.jsp %>!!顺便测试一下是否能给500分了~” 交互虚拟网站建设 有谁熟悉EJB、JSP的,请帮忙 怎么在jsp上获取对象里的一个数组的长度啊!!!求帮忙看看 100 分jsp中文传值乱码的问题
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);
}}