现在遇到了一个很棘手的问题,跪求各位大侠帮助!
现在我们的系统要做一个定时任务,简单来说就是数据拷贝。每隔五分钟这个定时任务启动,然后从容器中获得一个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好像是不支持多线程的。但是现在自己又找不到解决效率的方法。在此跪求各位大侠帮助,小弟感激不尽!

解决方案 »

  1.   

    有一个任务调度开源框架 quartz 你们为什么不试一试这个呢。 学习曲线不陡峭。 容易掌握的。
      

  2.   

    quartz框架已经把任务做成了多线程并发的方式的。 
      

  3.   

    在此先感谢yingzhuo2011给出的建议。
    但是这位兄弟没有理解我的意思,现在我的定时任务就是通过quartz做的。关键是一个任务里面涉及的数据量特别大,调用一次任务都耗时十分钟以上,现在的目的是使一次任务的执行时间减少至两分钟以内,所以考虑用多线程。不知yingzhuo2011你还有其他方法没有?