Spring MVC 中的 Controller 是線程安全的嗎?
往期熱門文章:
2、再見付費(fèi)的 TeamViewer,這款國(guó)產(chǎn)輕量級(jí)遠(yuǎn)程控制軟件是絕佳的替代品!
3、Mybatis-Plus官方發(fā)布分庫(kù)分表神器,一個(gè)依賴輕松搞定!

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 關(guān)鍵字,synchronized 是同步的意思,表示無論你有多少線程,必須同步等待其他線程結(jié)束以后才能訪問這個(gè)方法,問題是解決了,但是你運(yùn)行程序的時(shí)候會(huì)發(fā)現(xiàn),打印非常慢。
@SneakyThrows
public?synchronized?int?incCount()?{
????Thread.sleep(new?Random().nextInt(500));
????return?count++;
}
往期熱門文章:
1、我用Java幾分鐘處理完30億個(gè)數(shù)據(jù)... 2、炸了!Java多線程批量操作,居然有人不做事務(wù)控制 3、巨坑,常見的 update 語(yǔ)句很容易造成Bug 4、完爆90%的數(shù)據(jù)庫(kù)性能毛病! 5、Spring Boot性能太差,教你幾招輕松搞定 6、Fastjson 2 來了,性能繼續(xù)提升,還能再戰(zhàn)十年 7、笑死!程序員延壽指南開源了 8、用 Dubbo 傳輸文件?被老板一頓揍! 9、45 個(gè) Git 經(jīng)典操作場(chǎng)景,專治不會(huì)合代碼! 10、@Transactional 注解失效的3種原因及解決辦法
評(píng)論
圖片
表情
