1砸紊、Java并發(fā)編程入門與高并發(fā)面試-課程導(dǎo)學(xué)

慕課網(wǎng) Jimin老師 Java并發(fā)編程入門與高并發(fā)面試 學(xué)習(xí)筆記
Java并發(fā)編程入門與高并發(fā)面試

包括:

線程安全传于、線程封閉、線程調(diào)度醉顽、同步容器沼溜、并發(fā)容器、AQS游添、J.U.C

解決思路:

擴(kuò)容系草、緩存、隊(duì)列否淤、拆分悄但、服務(wù)降級(jí)與熔斷、數(shù)據(jù)庫(kù)切庫(kù)石抡、分表分庫(kù)檐嚣、等等


image.png
并發(fā)及并發(fā)的線程安全處理
image.png
  1. 線程安全性
    原子性、可見(jiàn)性啰扛、有序性嚎京、atomic包、CAS算法隐解、synchorized與Lock鞍帝、volatile、happes-before
  2. 安全發(fā)布對(duì)象
    安全發(fā)布方法煞茫、不可變對(duì)象帕涌、final關(guān)鍵字使用、不可變方法续徽、線程不安全類與寫法
  3. 線程安全手段
    堆棧封閉蚓曼、ThreadLocal線程封閉、JDBC的線程封閉钦扭、同步容器纫版、并發(fā)容器、J.U.C
  4. AQS及其他J.U.C組件
    CountDownLatch. Semaphore.CyclicBarier. ReentrantLock與鎖客情、Condition, FutureTask其弊、ForkJoin框架癞己、BlockingQueue
  5. 線程池
    new Thread弊端、線程池的好處梭伐、ThreadPoolExecutor.Executor框架接口
  6. 額外補(bǔ)充
    死鎖的產(chǎn)生與預(yù)防痹雅、多線程并發(fā)最佳實(shí)踐、Spring 的線程安全籽御、HashMap和ConcurrentHashMap深入講解

200線程同時(shí)執(zhí)行時(shí)候,count只有4890练慕,如果threadTotal 改成1,則是5000技掏,就是線下測(cè)試時(shí)候一直都是對(duì)的铃将,放到線上并發(fā)大了,就老是會(huì)出問(wèn)題哑梳!

@Slf4j
public class MapExample {
    //200個(gè)線程同時(shí)執(zhí)行
    private static int threadTotal = 200;
    private static int clientTotal = 5000;

    private static Map<Integer, Integer> map = Maps.newHashMap();

    public static void main(String[] args) {
        ExecutorService exec = Executors.newCachedThreadPool();
        final Semaphore semaphore = new Semaphore(threadTotal);
        for (int index = 0; index < clientTotal; index++) {
            final int threadNum = index;
            exec.execute(() -> {
                try {
                    semaphore.acquire();
                    func(threadNum);
                    semaphore.release();
                } catch (InterruptedException e) {
                    log.error("exception", e);
                    e.printStackTrace();
                }
            });
        }
        exec.shutdown();
        log.error("count:{}", map.size());//count:4890
    }

    private static void func(int threadNum) {
        map.put(threadNum, threadNum);
    }
}
import lombok.extern.slf4j.Slf4j;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Semaphore;

@Slf4j
public class CountExample {
    private static int threadTotal = 200;
    private static int clientTotal = 5000;
    private static long count = 0;

    public static void main(String[] args) {
        ExecutorService exec = Executors.newCachedThreadPool();
        final Semaphore semaphore = new Semaphore(threadTotal);
        for (int index = 0; index < clientTotal; index++) {
            exec.execute(() -> {
                try {
                    semaphore.acquire();
                    add();
                    semaphore.release();
                } catch (InterruptedException e) {
                    log.error("exception", e);
                    e.printStackTrace();
                }
            });
        }
        exec.shutdown();
        log.error("count:{}", count);//count:4911
    }

    private static void add() {
        count++;
    }
}
并發(fā)基本概念

并發(fā):同時(shí)擁有兩個(gè)或者多個(gè)線程劲阎,如果程序在單核處理器上運(yùn)行多個(gè)線程將交替地?fù)Q入或者換出內(nèi)存,這些線程是同時(shí)"存在"的,每個(gè)線程都處于執(zhí)行過(guò)程中的某個(gè)狀態(tài)如果運(yùn)行在多核處理器上,此時(shí),程序中的每個(gè)線程都將分配到一個(gè)處理器核上,因此可以同時(shí)運(yùn)行.

高并發(fā):

高并發(fā)( High Concurrency )是互聯(lián)網(wǎng)分布式系統(tǒng)架構(gòu)設(shè)計(jì)中必須考慮的因素之一 ,它通常是指,通過(guò)設(shè)計(jì)保證系統(tǒng)能夠同時(shí)并行處理很多請(qǐng)求.

image.png

高并發(fā)處理的思路及手段

1鸠真、擴(kuò)容:水平擴(kuò)容悯仙、垂直擴(kuò)容的探討
2、緩存:Redis. Memcache吠卷、 Guava Cache等的介紹與使用
3锡垄、隊(duì)列:Kafka、RabbitMQ祭隔、RocketMQ等隊(duì)列特性介紹及使用隊(duì)列的關(guān)注點(diǎn)
4货岭、應(yīng)用拆分:服務(wù)化Dubbo與微服務(wù)Spring Cloud介紹
5、限流:Guava Ratel imiter的介紹與使用疾渴、常用限流算法千贯、自己實(shí)現(xiàn)分布式限流等
6、服務(wù)降級(jí)與服務(wù)熔斷:服務(wù)降級(jí)的多種選擇搞坝、Hystrix介紹及使用等
7搔谴、數(shù)據(jù)庫(kù)切庫(kù)、分庫(kù)桩撮、分表:介紹切庫(kù)敦第、分表、支持多數(shù)據(jù)源的原理及實(shí)現(xiàn)
8店量、高可用的一些手段:任務(wù)調(diào)度分布式elastic-job.主備curator的實(shí)現(xiàn)芜果、監(jiān)控報(bào),警機(jī)制等


image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末垫桂,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子粟按,更是在濱河造成了極大的恐慌诬滩,老刑警劉巖霹粥,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異疼鸟,居然都是意外死亡后控,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門空镜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)浩淘,“玉大人,你說(shuō)我怎么就攤上這事吴攒≌懦” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵洼怔,是天一觀的道長(zhǎng)署惯。 經(jīng)常有香客問(wèn)我,道長(zhǎng)镣隶,這世上最難降的妖魔是什么极谊? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮安岂,結(jié)果婚禮上轻猖,老公的妹妹穿的比我還像新娘。我一直安慰自己域那,他們只是感情好咙边,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著琉雳,像睡著了一般样眠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上翠肘,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天檐束,我揣著相機(jī)與錄音,去河邊找鬼束倍。 笑死被丧,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的绪妹。 我是一名探鬼主播甥桂,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼邮旷!你這毒婦竟也來(lái)了黄选?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎办陷,沒(méi)想到半個(gè)月后貌夕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡民镜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年啡专,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片制圈。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡们童,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鲸鹦,到底是詐尸還是另有隱情慧库,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布亥鬓,位于F島的核電站完沪,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏嵌戈。R本人自食惡果不足惜覆积,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望熟呛。 院中可真熱鬧宽档,春花似錦、人聲如沸庵朝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)九府。三九已至椎瘟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間侄旬,已是汗流浹背肺蔚。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留儡羔,地道東北人宣羊。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像汰蜘,于是被迫代替她去往敵國(guó)和親仇冯。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355