Spring MVC 中的 Controller 是线程安全的吗?
往期热门文章:
2、再见付费的 TeamViewer,这款国产轻量级远程控制软件是绝佳的替代品!
3、Mybatis-Plus官方发布分库分表神器,一个依赖轻松搞定!
import java.util.Random;
public class ThreadTest {
private int count;
@SneakyThrows
public int incCount() {
Thread.sleep(new Random().nextInt(500));
return count++;
}
public static void main(String[] args) {
ThreadTest threadTest = new ThreadTest();
for (int i = 0; i < 100; i++) {
new Thread(() -> System.out.println(threadTest.incCount())).start();
}
}
}
0
1
2
3
4
5
6
8
7
9
10
11
13
12
12
14
15
……
90
添加 synchronized 关键字,synchronized 是同步的意思,表示无论你有多少线程,必须同步等待其他线程结束以后才能访问这个方法,问题是解决了,但是你运行程序的时候会发现,打印非常慢。
@SneakyThrows
public synchronized int incCount() {
Thread.sleep(new Random().nextInt(500));
return count++;
}
往期热门文章:
1、我用Java几分钟处理完30亿个数据... 2、炸了!Java多线程批量操作,居然有人不做事务控制 3、巨坑,常见的 update 语句很容易造成Bug 4、完爆90%的数据库性能毛病! 5、Spring Boot性能太差,教你几招轻松搞定 6、Fastjson 2 来了,性能继续提升,还能再战十年 7、笑死!程序员延寿指南开源了 8、用 Dubbo 传输文件?被老板一顿揍! 9、45 个 Git 经典操作场景,专治不会合代码! 10、@Transactional 注解失效的3种原因及解决办法
评论