線程安全的三要素 原子性 可見性 有序性 synchronized和各種鎖可以保證原子性和可見性 volatile可以保證可見性和有序性,也就是防止指令重排 ![]() volatile threadlocal nio 阻塞和非阻塞 同步和異步 線程同步是有序性,就是sync,就是順序執(zhí)行 同步io也是這個(gè)意思, 異步io,可以做其他事情 并行 并發(fā) 并行,表示兩個(gè)線程同時(shí)做事情。多核才可以 并發(fā),表示一會(huì)做這個(gè)事情,一會(huì)做另一個(gè)事情,存在著調(diào)度。 concurrenthashmap是分段鎖 java阻塞io 你讀取數(shù)據(jù)的時(shí)候,你不能干別的 你寫入數(shù)據(jù)的時(shí)候也不能干別的。 java nio NIO主要有三大核心部分:Channel(通道),Buffer(緩沖區(qū)), Selector。傳統(tǒng)IO基于字節(jié)流和字符流進(jìn)行操作,而NIO基于Channel和Buffer(緩沖區(qū))進(jìn)行操作,數(shù)據(jù)總是從通道讀取到緩沖區(qū)中,或者從緩沖區(qū)寫入到通道中。Selector(選擇區(qū))用于監(jiān)聽多個(gè)通道的事件(比如:連接打開,數(shù)據(jù)到達(dá))。因此,單個(gè)線程可以監(jiān)聽多個(gè)數(shù)據(jù)通道。 java nio把數(shù)據(jù)寫入緩沖區(qū)就直接完事了,然后監(jiān)聽器監(jiān)聽是否成功即可。。 java nio發(fā)送一個(gè)讀取請(qǐng)求就完事了,然后監(jiān)聽器監(jiān)聽是否成功。。 監(jiān)聽器是不是就是輪詢的實(shí)現(xiàn)。。 |
|