首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

Spring 事宜在多线程环境下的传播

2012-06-30 
Spring 事务在多线程环境下的传播有时候需要使用多线程来提高对于CPU,尤其是多核CPU的利用率,来提高性能。S

Spring 事务在多线程环境下的传播
有时候需要使用多线程来提高对于CPU,尤其是多核CPU的利用率,来提高性能。Spring的bean一般都是无状态的,单例的。所以也就是线程安全的。那么对于声明式的事务,在多线程环境下又是怎么处理的呢?

看看下面的例子:

ClassA.java@Transactionalpublic void methodA(){            ExecutorService executorService = Executors.newFixedThreadPool(4);    executorService.execute(new Runnable() {        public void run() {            classB.methodB();        }});}ClassB.java@Transactionalpublic void methodB(){    updateDB();}


你认为methodB和methodA的事务是同一个吗?其实不是。Spring的事务是和thread绑定的。由于methodB在另起的一个新的线程中,所以Spring会为其生成一个新的事务。
自然,如果methodA或methodB中因出错而rollback,也是彼此不影响的。

热点排行