首页 新闻 会员 周边

Spring中多个线程调用Service中的方法出错

0
悬赏园豆:50 [待解决问题]

service中入库的方法,需要在多线程的情况下做测试,然后就开启两个线程循环执行service方法,但是出现了很多问题,有以下几种情况。

  1. 两个线程都执行到一半然后就报错终止,数据库分别有几条数据
  2. 两个线程都只执行一遍,数据库分别有一条数据
  3. 数据库没有数据

相关代码

 @Rollback(value = false)
    @Test
    public void test() throws Exception {
//        不开启线程,在主线程中执行没有问题
//        for (int i = 0; i < 10; i++) {
//            normal(Thread.currentThread().getId(), i);
//        }

        Thread thread1 = new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i < 10; i++) {
                    normal(Thread.currentThread().getId(), i);
                }
            }
        });
        Thread thread2 = new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i < 10; i++) {
                    normal(Thread.currentThread().getId(), i);
                }
            }
        });

        thread1.start();
        thread2.start();

    }

    public void normal(long id, int n) {
        auditLoggingService.insertAuditLogging("修改个人密码成功" + id + "/" + n, 56, 6, 0,
                BaseConstants.AuditLoggingOperatorType.MODIFY, "修改个人密码", "修改密码", 0, "", "", "无", "", BaseConstants.UserInfo.USER_CAT_INNER, "yangyan", "");

    }

错误信息

  1. 有时候可以成功执行,没有报错信息,但是数据库没有信息
  2. Returning cached instance of singleton bean 'org.springframework.transaction.interceptor.TransactionInter
李安歌的主页 李安歌 | 初学一级 | 园豆:158
提问于:2018-08-20 11:05
< >
分享
所有回答(2)
0

加上thread1.join(); thread2.join(); 试试

让我发会呆 | 园豆:2929 (老鸟四级) | 2018-08-21 15:41
0

for end

李安歌 | 园豆:158 (初学一级) | 2023-05-11 10:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册