20180108學(xué)習(xí)內(nèi)容

1.volatile 線程變成? 2大特點(diǎn)? 可見(jiàn)性 和 互斥(有序性)??

在并發(fā)編程中,我們通常會(huì)遇到以下三個(gè)問(wèn)題:原子性問(wèn)題,可見(jiàn)性問(wèn)題,有序性問(wèn)題。我們先看具體看一下這三個(gè)概念:

1.原子性

原子性:即一個(gè)操作或者多個(gè)操作 要么全部執(zhí)行并且執(zhí)行的過(guò)程不會(huì)被任何因素打斷,要么就都不執(zhí)行。

一個(gè)很經(jīng)典的例子就是銀行賬戶轉(zhuǎn)賬問(wèn)題:

比如從賬戶A向賬戶B轉(zhuǎn)1000元,那么必然包括2個(gè)操作:從賬戶A減去1000元,往賬戶B加上1000元。

2.可見(jiàn)性

可見(jiàn)性是指當(dāng)多個(gè)線程訪問(wèn)同一個(gè)變量時(shí),一個(gè)線程修改了這個(gè)變量的值,其他線程能夠立即看得到修改的值。

3.有序性

有序性:即程序執(zhí)行的順序按照代碼的先后順序執(zhí)行。

socket 鏈接超時(shí)時(shí)間設(shè)置 setSoTimeOut();? 得寫(xiě)文件設(shè)置超時(shí)時(shí)間好像有個(gè)一個(gè) tryLock() 方法

jvm運(yùn)行流程:

首先是初始化jvm ---內(nèi)加裝器開(kāi)始工作? ? ? ?(內(nèi)存分為5大模塊:方法區(qū)(如類、靜態(tài)變量和常量,大小由-XX:PermSize和-XX:MaxPermSize來(lái)調(diào)節(jié)? 方法區(qū)是各個(gè)線程共享的區(qū)域,用于存儲(chǔ)已經(jīng)被虛擬機(jī)加載的類信息(即加載類時(shí)需要加載的信息,包括版本、field、方法、接口等信息)、final常量、靜態(tài)變量、編譯器即時(shí)編譯的代碼等),堆(內(nèi)存分配,存儲(chǔ)對(duì)象? 堆大小由-Xmx和-Xms來(lái)調(diào)節(jié)),棧(存儲(chǔ)局部變量表,操作,方法出口等與方法執(zhí)行相關(guān)的信息,棧大小由Xss來(lái)調(diào)節(jié),方法調(diào)用層次太多會(huì)撐爆這個(gè)區(qū)域),指針(程序讀取文件行數(shù)記錄),本地方法區(qū))

Treemap和TreeSet?可以自動(dòng)實(shí)現(xiàn)排序;ArryList 刪除重復(fù)元素? 正確的做法就是用 iteration?? 迭代循環(huán)去重

注意并發(fā)(Concurrent)和并行(Parallel)的區(qū)別:

? ? ?并發(fā)是指用戶線程與GC線程同時(shí)執(zhí)行(不一定是并行,可能交替,但總體上是在同時(shí)執(zhí)行的),不需要停頓用戶線程(其實(shí)在CMS中用戶線程還是需要停頓的,只是非常短,GC線程在另一個(gè)CPU上執(zhí)行);

? ? ?并行收集是指多個(gè)GC線程并行工作,但此時(shí)用戶線程是暫停的;

所以,Serial和Parallel收集器都是并行的,而CMS收集器是并發(fā)的.


分布式緩存(作用是什么?為什么要用分布式緩存,用了后怎么維護(hù)) 分布式環(huán)境 一般會(huì)選擇用Nosql 來(lái)實(shí)現(xiàn) 通過(guò)一種算法保證數(shù)據(jù)能存到對(duì)應(yīng)服務(wù)上(科學(xué)算法是在一個(gè)圓上做處理,服務(wù)器會(huì)算出一個(gè)hash值存在一個(gè)圓的節(jié)點(diǎn)上,值的話就根據(jù)算出來(lái)的值離他最近的結(jié)算去存取值)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容