求助:EBJ与多线程

wendaoshuangyue 2011-05-05 11:54:00
现在遇到了一个很棘手的问题,跪求各位大侠帮助!
现在我们的系统要做一个定时任务,简单来说就是数据拷贝。每隔五分钟这个定时任务启动,然后从容器中获得一个EJB对象(假设叫做EJBCopyDataJob),调用EJBCopyDataJob里面的一个startCopyDataJob方法,开始数据拷贝。由于涉及到业务处理,我们不能简单的只是拷贝数据,而是必须通过调用其他EJB对象的方法来实现数据拷贝。伪代码如下:
startCopyDataJob(){
for(...){
EJBBussinessBean bean=EJBContainer.getEJBBussinessBean();
bean.bussinessLogic();
}
}
由于现在是单线程处理,所以startCopyDataJob里面的循环只能一条一条的处理,速度很慢,现在想换成多线程的方式:
startCopyDataJob(){
for(...){
EJBBussinessBean bean=EJBContainer.getEJBBussinessBean();
MyThread t=new MyThread(bean);
t.start();
}
}
现在自己按照上面的方式简单的尝试了一下,但是出现了很多错误,包括事务,连接池,死锁等等。
后来上网简单的搜索了一下,都说EJB好像是不支持多线程的。但是现在自己又找不到解决效率的方法。在此跪求各位大侠帮助,小弟感激不尽!
...全文
65 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yingzhuo2011 2011-05-05
  • 打赏
  • 举报
回复
这个我倒是不理解了。 为什么一个大任务用了多线程以后就可以由原来的1个小时变成现在的半个小时呢。

我觉得多线程解决不了你的问题。

你现在应该是在算法上下点功夫,看看怎么能够优化。
wendaoshuangyue 2011-05-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yingzhuo2011 的回复:]

有一个任务调度开源框架 quartz 你们为什么不试一试这个呢。

学习曲线不陡峭。 容易掌握的。
[/Quote]
在此先感谢yingzhuo2011给出的建议。
但是这位兄弟没有理解我的意思,现在我的定时任务就是通过quartz做的。关键是一个任务里面涉及的数据量特别大,调用一次任务都耗时十分钟以上,现在的目的是使一次任务的执行时间减少至两分钟以内,所以考虑用多线程。不知yingzhuo2011你还有其他方法没有?
yingzhuo2011 2011-05-05
  • 打赏
  • 举报
回复
quartz框架已经把任务做成了多线程并发的方式的。
yingzhuo2011 2011-05-05
  • 打赏
  • 举报
回复
有一个任务调度开源框架 quartz 你们为什么不试一试这个呢。

学习曲线不陡峭。 容易掌握的。

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧