社区
Java EE
帖子详情
JSP使用多线程
noobfresher
2018-04-28 08:59:28
想要开多个线程去访问远程的数据接口(因为需要模拟登陆所以返回较慢,一般需要1-5s),同时在页面上实时显示接口返回数据,想问一下这种怎么做才好?(接口返回数据耗时基本是随机的,所以用callable的话需要等那个较慢的;而用runnable的话怎么在run函数中调用jsp的out或response又是个问题)
刚接触jsp还请各位说得详细点,谢谢~
...全文
899
1
打赏
收藏
JSP使用多线程
想要开多个线程去访问远程的数据接口(因为需要模拟登陆所以返回较慢,一般需要1-5s),同时在页面上实时显示接口返回数据,想问一下这种怎么做才好?(接口返回数据耗时基本是随机的,所以用callable的话需要等那个较慢的;而用runnable的话怎么在run函数中调用jsp的out或response又是个问题) 刚接触jsp还请各位说得详细点,谢谢~
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
noobfresher
2018-04-28
打赏
举报
回复
贴一下两种方式的实验代码,Runnable的会报IOException Callable: <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ page import="java.util.concurrent.*" %> <html> <head> <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8"> <title>Title</title> </head> <%! public class MyCallable implements Callable{ private String url; private String param; public MyCallable(String url, String param){ this.url=url; this.param=param; } public String call() throws Exception{ int ran=(int)(Math.random()*5000); Thread.sleep(ran); return Thread.currentThread().getName()+", "+this.url+", "+this.param+" sleeped "+ran+" milliseconds!"; } } %> <% out.println(String.format("%256s","")); ExecutorService pool = Executors.newFixedThreadPool(5); Callable[] c=new Callable[5]; Future[] f=new Future[5]; for(int i=0;i<5;i++) c[i]=new MyCallable("A"+i,"B"+i); for(int i=0;i<5;i++) f[i]=pool.submit(c[i]); for(int i=0;i<5;i++){ out.println(f[i].get().toString()+"</br>"); out.flush(); } pool.shutdown(); %> Runnable: <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8"> <title>Title</title> </head> <%! public static void myFunc(String Bits, javax.servlet.jsp.JspWriter myOut){ try{ myOut.println("<div>"+Bits+"</div>"); } catch(Exception eek) { } } public class MyRunnable implements Runnable{ private String url; private String param; private javax.servlet.jsp.JspWriter myOut; public MyRunnable(String url, String param, javax.servlet.jsp.JspWriter myOut){ this.url=url; this.param=param; this.myOut=myOut; } public void run(){ myFunc(Thread.currentThread().getName()+", "+this.url+", "+this.param, this.myOut); } } %> <% for(int i=0;i<5;i++) new Thread(new MyRunnable("A"+i, "B"+i, out)).start(); %>
JSP
的
多线程
问题详解
本文深入探讨了
JSP
中的
多线程
问题,包括实例变量、局部变量和静态类的区别,以及如何避免数据一致性问题。通过示例说明了如何在
JSP
中采用单线程方式、对关键函数进行同步,以及
使用
局部变量来解决
多线程
问题,旨在提高程序的稳定性和性能。
使用
JSP
的心得
本文分享
JSP
学习心得,介绍了
JSP
工作原理,包括转换、编译及
多线程
处理;阐述服务端输出缓冲区和重定向方法;强调正确应用类可提升性能;分析
JSP
调试常见错误;还提及COOKIE
使用
及
JSP
与SERVLET区别,给出不同应用场景的架构建议。
Jsp
多线程
本文探讨了
JSP
默认的
多线程
执行模式及其带来的同步问题。通过具体示例展示了
多线程
环境下可能出现的数据不一致问题,并提供了几种解决方案,包括采用单线程模式、函数同步和
使用
局部变量。
servlet/
jsp
线程安全
本文详细介绍了在Servlet/
JSP
开发中如何正确
使用
实例变量,防止
多线程
环境下的同步问题。通过实例演示了实例变量可能导致的并发问题,并提供了两种解决方案:单线程运行Servlet/
JSP
和避免
使用
实例变量。
Java EE
67,535
社区成员
225,852
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章