当前位置:编程学习 > JAVA >>

一直困惑个问题到项目结束 郁闷 求指教

小弟参与公司web产品开发 需要在java端启动线程 主要作用是 客户端用户每打开一个页面 就启动线程和另一套程序通信 获取数据后给页面展示使用,为什么采用线程 主要是因为页面远程调用java 启动线程后返回 实现异步效果 如果我无限循环去和另一套程序socket通信 导致页面无法操作 当页面关闭的时候 调用java方法 结束线程 
现在问题来了 在web下启动多线程好像是web开发的一个忌讳 并不推荐这么用影响web程序的稳定性 但是我们这个产品 不用多线程很难实现比较好的客户体验以及和另一套C++程序进行通信 我们这个产品基本不依赖数据库 而是通过通信的方式实时获取数据并显示 我的现成每次启动都放在一个hashtable 里 然后页面关闭的时候从hashtable里找到他 执行结束操作 有的时候会提示out of memory can not creat natice thread的异常 不知道问题出现在哪里 请各位高手指点 有什么好的建议 或是意见 想法 请大家随便说说 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 不是很多,不过可以参考线程方面,是不是多线程出了问题 --------------------编程问答-------------------- 自己顶 别沉了 待高人指教 --------------------编程问答-------------------- 用啥socket 用webservices... --------------------编程问答-------------------- 每打开一个页面就启动一个线程,你们这是自寻死路。。 --------------------编程问答--------------------
引用 楼主 shanzhaikaifa 的回复:
在web下启动多线程好像是web开发的一个忌讳 并不推荐这么用影响web程序的稳定性


谁说的?反正我是没听说过。

Web天生就是多线程的,但是JavaEE是把多线程设计好了,让你不至于在开发时背包袱。

非要写,去随便找个服务器中间件,读一下他们的源码就可以。
--------------------编程问答--------------------
引用 5 楼 meichen8050753 的回复:
每打开一个页面就启动一个线程,你们这是自寻死路。。


我也知道这样不好 但是没办法 因为我需要客户端打开页面 就去掉java的方法 返回 并通知另一套程序开始给web推送数据,所以靠线程来完成这个过程,如果不启动线程就会像一个函数调用死循环 永远都不返回 --------------------编程问答--------------------
引用 4 楼 meichen8050753 的回复:
用啥socket 用webservices...


用webservice 就是拉的模式 现在采用的推的模式 --------------------编程问答--------------------
引用 6 楼 forgetsam 的回复:
引用 楼主 shanzhaikaifa 的回复:在web下启动多线程好像是web开发的一个忌讳 并不推荐这么用影响web程序的稳定性

谁说的?反正我是没听说过。

Web天生就是多线程的,但是JavaEE是把多线程设计好了,让你不至于在开发时背包袱。

非要写,去随便找个服务器中间件,读一下他们的源码就可以。


确实如此 但是javaEE的多线程和我这里的需求貌似不是完全一样的,我的这种情况个人理解好比在javaEE的处理机制下的线程里又启动了自己的线程 --------------------编程问答-------------------- 要么用ajax做心跳。不是一定要用服务器推送的。。 --------------------编程问答--------------------
引用 10 楼 meichen8050753 的回复:
要么用ajax做心跳。不是一定要用服务器推送的。。


我也是这么任务 推送的优势目前还未看到 但是领导要求用推送的方式 而不是主动去拉 --------------------编程问答-------------------- 用applet --------------------编程问答-------------------- 要么就用websocket 后台用nio --------------------编程问答-------------------- 我也觉得干吗不用webservice来访问你那边的c++应用,c++端创建一个webservice接口,然后你拿到这个服务的wsdl文件,在java端生成桩,那么就和调用java一样。相比采用线程好多了,webservice大部分就是用于不同系统之间的集成。 --------------------编程问答--------------------
引用 14 楼 JDream314 的回复:
我也觉得干吗不用webservice来访问你那边的c++应用,c++端创建一个webservice接口,然后你拿到这个服务的wsdl文件,在java端生成桩,那么就和调用java一样。相比采用线程好多了,webservice大部分就是用于不同系统之间的集成。

用webservice的方式我需要主动去调用 而我们需要采用的是推送的方式,用户页面只需等待数据过来 无需定时去调用 以达到实时更新页面数据的目的 
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,