關(guān)于死鎖,我用的是springmvc框架,事物在service層創(chuàng)建大概的操作是這樣的:學(xué)生表student,選課表elective選課表與考生表關(guān)聯(lián)的boolean checkElective(string sids, string state){//sids是學(xué)生id的拼接,大概像1,2,3這樣//把每一個(gè)id轉(zhuǎn)成integer,具體代碼先省略 integer[] sid = ....;list<elective> electives = new arrayList<elective>();list<student> students = new arrayList<students>();foreach(int studentid : sid){Student student = getById(studentid);student.setTime(time);students.add(student);Elective elective = getEleByStudent(studentid);elective.setState('成功');electives.add(elective);}baseDao.save(electives) && baseDao.save(students);}項(xiàng)目的大概意思是這樣的,測試的時(shí)候沒有問題,也沒有報(bào)錯(cuò)。但是部署到服務(wù)器上之后,數(shù)據(jù)一多就報(bào)死鎖的錯(cuò)誤org.springframework.dao.ConnotAcquireLockException:Could not execute JDBC batch update;是報(bào)錯(cuò)在students保存的時(shí)候求教各位大神
1 回答

慕妹3146593
TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊
死鎖是兩個(gè)線程互相等待造成的,你知道這一點(diǎn)吧,學(xué)習(xí)這個(gè)學(xué)的是思路不是代碼。
baseDao.save(students); 同步那些修改變量的代碼,使用synchronized關(guān)鍵字同步方法或代碼。 同步之后就會(huì)只有一個(gè)線程訪問了。
- 1 回答
- 0 關(guān)注
- 80 瀏覽
添加回答
舉報(bào)
0/150
提交
取消