现在遇到了一个很棘手的问题,跪求各位大侠帮助!
现在我们的系统要做一个定时任务,简单来说就是数据拷贝。每隔五分钟这个定时任务启动,然后从容器中获得一个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好像是不支持多线程的。但是现在自己又找不到解决效率的方法。在此跪求各位大侠帮助,小弟感激不尽!
现在我们的系统要做一个定时任务,简单来说就是数据拷贝。每隔五分钟这个定时任务启动,然后从容器中获得一个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好像是不支持多线程的。但是现在自己又找不到解决效率的方法。在此跪求各位大侠帮助,小弟感激不尽!
解决方案 »
- 怎么把后台的byte数组,传值给前台的js 做参数.......................................................
- 现在初学ext-gwt,有没有好点的这方面的学习资料。
- 如何配置log4j让他只显示我log.debug()的内容
- 问一下弱问题
- Tomcat配置问题
- json对象转换问题
- 大侠推荐一个做报表软件吧!!!
- 请问JBuilder下EJB开发的问题
- 求大神帮我精简SQL句子。
- mycat io.mycat.config.util.ConfigException: org.xml.sax.SAXParseException
- java编程问题
- 求解,在线等,关于jar包的事
但是这位兄弟没有理解我的意思,现在我的定时任务就是通过quartz做的。关键是一个任务里面涉及的数据量特别大,调用一次任务都耗时十分钟以上,现在的目的是使一次任务的执行时间减少至两分钟以内,所以考虑用多线程。不知yingzhuo2011你还有其他方法没有?