我弄了个投票功能,想测试一下并发下会不会出错,我不懂为什么没出现少投票的情况,一个人修改数据库的过程中,时候另一个人刚好修改了,
数据不应该小于总的累加数吗??
是不是我测试的有问题??
希望大佬解答一下!!
语句是
UPDATE candidates set ticket_num = REPLACE(ticket_num,ticket_num,ticket_num+1)
WHERE u_id=#{u_id} and p_id=#{p_id}
写了个测试方法
@Test
void vote1000() throws InterruptedException {
Candidates candidates=new Candidates(2017010303,1);
ArrayList<Thread> arrayList=new ArrayList();
for (int i = 0; i < 1000; i++) {
Thread thread=new Thread(()->{
candidatesMapper.SiUpdateTicket(candidates);
});
arrayList.add(thread);
}
new Thread(()->{
for (int i = 0; i < 500; i++) {
arrayList.get(i).start();
}
}).start();
new Thread(()->{for (int i = 500; i < 1000; i++) {
arrayList.get(i).start();
}}).start();
Thread.sleep(30000);
}