中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

微網(wǎng)站 微官網(wǎng)的區(qū)別嗎最近的新聞大事10條

微網(wǎng)站 微官網(wǎng)的區(qū)別嗎,最近的新聞大事10條,電影網(wǎng)站開發(fā)視頻教程,桂林同城網(wǎng)站前言 本來想著給自己放松一下,刷刷博客,突然被幾道面試題難倒!引用類型有哪些?有什么區(qū)別?說說你對JMM內存模型的理解?為什么需要JMM?多線程有什么用?似乎有點模糊了,那…

前言

本來想著給自己放松一下,刷刷博客,突然被幾道面試題難倒!引用類型有哪些?有什么區(qū)別?說說你對JMM內存模型的理解?為什么需要JMM?多線程有什么用?似乎有點模糊了,那就大概看一下面試題吧。好記性不如爛鍵盤

*** 12萬字的java面試題整理 ***
*** java核心面試知識整理 ***
*** Java高頻面試講解視頻(知識涵蓋齊全) ***

說說你對JMM內存模型的理解?為什么需要JMM?

隨著CPU和內存的發(fā)展速度差異的問題,導致CPU的速度遠快于內存,所以現(xiàn)在的CPU加入了高速緩存,高速緩存一般可以分為L1、L2、L3三級緩存。基于上面的例子我們知道了這導致了緩存一致性的問題,所以加入了緩存一致性協(xié)議,同時導致了內存可見性的問題,而編譯器和CPU的重排序導致了原子性和有序性的問題,JMM內存模型正是對多線程操作下的一系列規(guī)范約束,因為不可能讓陳雇員的代碼去兼容所有的CPU,通過JMM我們才屏蔽了不同硬件和操作系統(tǒng)內存的訪問差異,這樣保證了Java程序在不同的平臺下達到一致的內存訪問效果,同時也是保證在高效并發(fā)的時候程序能夠正確執(zhí)行。
在這里插入圖片描述

  • 原子性:Java內存模型通過read、load、assign、use、store、write來保證原子性操作,此外還有l(wèi)ock和unlock,直接對應著synchronized關鍵字的monitorenter和monitorexit字節(jié)碼指令。
  • 可見性:可見性的問題在上面的回答已經(jīng)說過,Java保證可見性可以認為通過volatile、synchronized、final來實現(xiàn)。
  • 有序性:由于處理器和編譯器的重排序導致的有序性問題,Java通過volatile、synchronized來保證。
happen-before規(guī)則

雖然指令重排提高了并發(fā)的性能,但是Java虛擬機會對指令重排做出一些規(guī)則限制,并不能讓所有的指令都隨意的改變執(zhí)行位置,主要有以下幾點:

  1. 單線程每個操作,happen-before于該線程中任意后續(xù)操作
  2. volatile寫happen-before與后續(xù)對這個變量的讀
  3. synchronized解鎖happen-before后續(xù)對這個鎖的加鎖
  4. final變量的寫happen-before于final域對象的讀,happen-before后續(xù)對final變量的讀
  5. 傳遞性規(guī)則,A先于B,B先于C,那么A一定先于C發(fā)生
說了半天,到底工作內存和主內存是什么?

主內存可以認為就是物理內存,Java內存模型中實際就是虛擬機內存的一部分。而工作內存就是CPU緩存,他有可能是寄存器也有可能是L1\L2\L3緩存,都是有可能的。

多線程有什么用?

一個可能在很多人看來很扯淡的一個問題:我會用多線程就好了,還管它有什么用?在我看來,這個回答更扯淡。所謂"知其然知其所以然",“會用"只是"知其然”,“為什么用"才是"知其所以然”,只有達到"知其然知其所以然"的程度才可以說是把一個知識點運用自如。OK,下面說說我對這個問題的看法:
(1)發(fā)揮多核CPU的優(yōu)勢
隨著工業(yè)的進步,現(xiàn)在的筆記本、臺式機乃至商用的應用服務器至少也都是雙核的,4核、8核甚至16核的也都不少見,如果是單線程的程序,那么在雙核CPU上就浪費了50%,在4核CPU上就浪費了75%。單核CPU上所謂的"多線程"那是假的多線程,同一時間處理器只會處理一段邏輯,只不過線程之間切換得比較快,看著像多個線程"同時"運行罷了。多核CPU上的多線程才是真正的多線程,它能讓你的多段邏輯同時工作,多線程,可以真正發(fā)揮出多核CPU的優(yōu)勢來,達到充分利用CPU的目的。
(2)防止阻塞
從程序運行效率的角度來看,單核CPU不但不會發(fā)揮出多線程的優(yōu)勢,反而會因為在單核CPU上運行多線程導致線程上下文的切換,而降低程序整體的效率。但是單核CPU我們還是要應用多線程,就是為了防止阻塞。試想,如果單核CPU使用單線程,那么只要這個線程阻塞了,比方說遠程讀取某個數(shù)據(jù)吧,對端遲遲未返回又沒有設置超時時間,那么你的整個程序在數(shù)據(jù)返回回來之前就停止運行了。多線程可以防止這個問題,多條線程同時運行,哪怕一條線程的代碼執(zhí)行讀取數(shù)據(jù)阻塞,也不會影響其它任務的執(zhí)行。
(3)便于建模
這是另外一個沒有這么明顯的優(yōu)點了。假設有一個大的任務A,單線程編程,那么就要考慮很多,建立整個程序模型比較麻煩。但是如果把這個大的任務A分解成幾個小任務,任務B、任務C、任務D,分別建立程序模型,并通過多線程分別運行這幾個任務,那就簡單很多了。

http://www.risenshineclean.com/news/35081.html

相關文章:

  • 深色大氣網(wǎng)站模板電腦培訓學校學費多少
  • web網(wǎng)站開發(fā)的基本流程產(chǎn)品運營方案
  • php網(wǎng)站怎么做測試工具上海網(wǎng)站建設開發(fā)
  • 網(wǎng)站頂部展出的大幅廣告推廣網(wǎng)站源碼
  • 廣州專業(yè)的網(wǎng)站建設青島建站seo公司
  • 想象力做網(wǎng)站十大免費最虧的免費app
  • 佛山網(wǎng)站建設百度一下首頁
  • cpa個人網(wǎng)站怎么做快速seo排名優(yōu)化
  • 網(wǎng)站建設公司做網(wǎng)站要多少費用農(nóng)產(chǎn)品品牌推廣方案
  • 微信開放平臺登錄好口碑的關鍵詞優(yōu)化
  • 網(wǎng)站建設 中企動力南昌產(chǎn)品如何推廣
  • 西安免費做網(wǎng)站哪家好大連seo外包平臺
  • 分類信息網(wǎng)站平臺的推廣新聞20字摘抄大全
  • 張家港保稅區(qū)建設規(guī)劃局網(wǎng)站湖南優(yōu)化公司
  • 做精神科網(wǎng)站專業(yè)代寫軟文
  • 電商網(wǎng)站seoseo管理系統(tǒng)培訓
  • 南京做網(wǎng)站公司seo排名優(yōu)化推薦
  • wordpress好看分頁北京做網(wǎng)絡優(yōu)化的公司
  • 新聞網(wǎng)站開發(fā)書籍北京seo公司
  • 做網(wǎng)站上傳服務器嗎優(yōu)化網(wǎng)站教程
  • 海南高端網(wǎng)站建設直接打開百度
  • 淮南 搭建一個企業(yè)展示網(wǎng)站cba最新排名
  • 電腦裝機網(wǎng)站網(wǎng)站優(yōu)化的方法有哪些
  • 營銷型網(wǎng)站=企業(yè)登記代理網(wǎng)站關鍵詞優(yōu)化方法
  • 做網(wǎng)站那個平臺個人怎么做免費百度推廣
  • wordpress 導入幻燈片優(yōu)化網(wǎng)站建設
  • 杭州設計網(wǎng)站最好的公司東莞seo建站排名
  • 網(wǎng)絡服務合同糾紛定義簡述影響關鍵詞優(yōu)化的因素
  • 海南做房地產(chǎn)網(wǎng)站的網(wǎng)絡公司seo公司官網(wǎng)
  • 制作官網(wǎng)需要什么條件茶葉seo網(wǎng)站推廣與優(yōu)化方案