多并发测试插入数据库
public void testSession() {
log.info("testSession start");
var session = Session.builder()
.username("alex.alex")
.eventId(110)
.eventType(10)
.expireTime(LocalDateTime.now().plusHours(1))
.isActiveEventViewed(false)
.isActivePopupViewed(false)
.isVisibleEventViewed(false)
.build()
;
var num = request.getNum();
CountDownLatch cdl = new CountDownLatch(num);
CyclicBarrier cyclicBarrier = new CyclicBarrier(num);
ExecutorService executorService = Executors.newFixedThreadPool(num);
for (int i = 0; i < num; i++) {
int finalI = i;
executorService.execute(() -> {
try {
cyclicBarrier.await();
session.setEventId(100 + finalI);
var newSession = sessionModel.getOrInsertSession(session);
log.info(" session {} ---> {}", newSession.getEventId(), newSession.getId());
} catch (BrokenBarrierException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
cdl.countDown();
}
});
}
log.info("testSession end");
}