成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

jdk1.7和jdk1.8有什么區(qū)別-創(chuàng)新互聯(lián)

這篇文章主要介紹了jdk1.7和jdk1.8有什么區(qū)別,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

為惠農(nóng)等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務,及惠農(nóng)網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務為網(wǎng)站制作、成都網(wǎng)站建設(shè)、惠農(nóng)網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

區(qū)別:jdk1.8中取消了永久代,取而代之的是Metaspace,這個空間不占用jvm虛擬機的內(nèi)存,而是占用物理機的內(nèi)存;jdk8新增了lambda表達式、訪問局部變量、函數(shù)式接口等特性。

jdk1.7與jdk1.8對比

1. jdk1.7語法上

1)  可以用二進制來表示整數(shù),用0b開頭。

2)  Switch語句支持string類型

3)   try塊可以不用finally手動關(guān)閉,直接try塊中就可以關(guān)閉

4)  Catch多個異常 說明:Catch異常類型為final所以不能被修改。這一特性將生成更少的字節(jié)碼并減少代碼冗余。重新拋異常時保持異常類型。

5)  可在數(shù)字中使用下劃線,更加友好。但要注意下劃線添加規(guī)則,下劃線只能在數(shù)字之間,在數(shù)字的開始或結(jié)束一定不能使用下劃線。

6)  創(chuàng)建泛型實例時,會根據(jù)變量聲明時的泛型類型自動推斷出實例的泛型類型。

7)  在可變參數(shù)方法中傳遞非具體化參數(shù),改進編譯警告和錯誤。

8)  信息更豐富的回溯追蹤。

2. NIO2的一些新特性

1)  實現(xiàn)了異步非阻塞IO和Proactor

2)  遞歸查找文件樹,文件擴展搜索

3. Jdbc

1)  可以使用try-with-resources自動關(guān)閉Connection, ResultSet,和 Statement資源對象。

2)  RowSet1.1(接口模型):引入RowSetFactory接口和RowSetProvider類,可以創(chuàng)建JDBC driver支持的各種 row sets,這里的rowset實現(xiàn)其實就是將sql語句上的一些操作轉(zhuǎn)為方法的操作,封裝了一些功能。

3)  JDBC-ODBC驅(qū)動會在jdk8中刪除。

4. 并發(fā)工具增強

1)  fork-join,F(xiàn)ork/Join框架是Java7提供了的一個用于并行執(zhí)行任務的框架, 是一個把大任務分割成若干個小任務,最終匯總每個小任務結(jié)果后得到大任務結(jié)果的框架。(充分利用多核特性,將大問題分解成各個子問題,由多個cpu可以同時解決多個子問題,最后合并結(jié)果)。

2)  ThreadLocalRandon并發(fā)下隨機數(shù)生成類,保證并發(fā)下的隨機數(shù)生成的線程安全,實際上就是使用threadlocal。

3)  phaser類

java5有一個并發(fā)包。里面有semaphore(信號量)、CountDownLatch(閉鎖)、CyclicBarrier(柵欄)。phaser 類優(yōu)化了CountDownLatch和CyclicBarrier。

信號量:信號量就是可以聲明多把鎖(包括一把鎖:此時為互斥信號量)。

舉個例子:一個房間如果只能容納5個人,多出來的人必須在門外面等著。如何去做呢?一個解決辦法就是:房間外面掛著五把鑰匙,每進去一個人就取走一把鑰匙,沒有鑰匙的不能進入該房間而是在外面等待。每出來一個人就把鑰匙放回原處以方便別人再次進入。

jdk1.7和jdk1.8有什么區(qū)別

主要用來控制能夠訪問的較大線程數(shù)。默認是非公平的??梢酝ㄟ^構(gòu)造器顯示聲明鎖的公平性。

閉鎖:

含義:CountDownLatch可以理解為一個計數(shù)器在初始化時設(shè)置初始值,當一個線程需要等待某些操作先完成時,需要調(diào)用await()方法。這個方法讓線程進入休眠狀態(tài)直到等待的所有線程都執(zhí)行完成。每調(diào)用一次countDown()方法內(nèi)部計數(shù)器減1,直到計數(shù)器為0時喚醒。這個可以理解為特殊的CyclicBarrier。線程同步點比較特殊,為內(nèi)部計數(shù)器值為0時開始。

方法:核心方法兩個:countDown()和await()。countDown():使CountDownLatch維護的內(nèi)部計數(shù)器減1,每個被等待的線程完成的時候調(diào)用。

await():線程在執(zhí)行到CountDownLatch的時候會將此線程置于休眠

例子:開會的例子:會議室里等與會人員到齊了會議才能開始。

柵欄:

含義:柵欄允許兩個或者多個線程在某個集合點同步。當一個線程到達集合點時,它將調(diào)用await()方法等待其它的線程。線程調(diào)用await()方法后,CyclicBarrier將阻塞這個線程并將它置入休眠狀態(tài)等待其它線程的到來。等最后一個線程調(diào)用await()方法時,CyclicBarrier將喚醒所有等待的線程然后這些線程將繼續(xù)執(zhí)行。CyclicBarrier可以傳入另一個Runnable對象作為初始化參數(shù)。當所有的線程都到達集合點后,CyclicBarrier類將Runnable對象作為線程執(zhí)行。

方法:await():使線程置入休眠直到最后一個線程的到來之后喚醒所有休眠的線程。

與CountDownLatch的區(qū)別:

在所有線程到達集合點后接受一個Runnable類型的對象作為后續(xù)的執(zhí)行

沒有顯示調(diào)用CountDown()方法

CountDownLatch一般只能使用一次,CyclicBarrier可以多次使用

應用場景:多個線程做任務,等到達集合點同步后交給后面的線程做匯總。

Phaser:

含義:更加復雜和強大的同步輔助類。它允許并發(fā)執(zhí)行多階段任務。當我們有并發(fā)任務并且需要分解成幾步執(zhí)行時,(CyclicBarrier是分成兩步),就可以選擇使用Phaser。Phaser類機制是在每一步結(jié)束的位置對線程進行同步,當所有的線程都完成了這一步,才允許執(zhí)行下一步。跟其他同步工具一樣,必須對Phaser類中參與同步操作的任務數(shù)進行初始化,不同的是,可以動態(tài)的增加或者減少任務數(shù)。

函數(shù):arriveAndAwaitAdvance():類似于CyclicBarrier的await()方法,等待其它線程都到來之后同步繼續(xù)執(zhí)行。arriveAndDeregister():把執(zhí)行到此的線程從Phaser中注銷掉。isTerminated():判斷Phaser是否終止。register():將一個新的參與者注冊到Phaser中,這個新的參與者將被當成沒有執(zhí)行完本階段的線程。forceTermination():強制Phaser進入終止態(tài)

例子:使用Phaser類同步三個并發(fā)任務。這三個任務將在三個不同的文件夾及其子文件夾中查找過去24小時內(nèi)修改過擴展為.log的文件。這個任務分成以下三個步驟:查找文件、過濾文件、打印結(jié)果。并且在查找文件和過濾文件結(jié)束后對結(jié)果進行分析,如果是空的,將此線程從Phaser中注銷掉。也就是說,下一階段,該線程將不參與運行。在run()方法中,開頭調(diào)用了phaser的arriveAndAwaitAdvance()方法來保證所有線程都啟動了之后再開始查找文件。在查找文件和過濾文件階段結(jié)束之后,都對結(jié)果進行了處理。即:如果結(jié)果是空的,那么就把該條線程移除,如果不空,那么等待該階段所有線程都執(zhí)行完該步驟之后在統(tǒng)一執(zhí)行下一步。最后,任務執(zhí)行完后,把Phaser中的線程均注銷掉。

Phaser其實有兩個狀態(tài):活躍態(tài)和終止態(tài)。當存在參與同步的線程時,Phaser就是活躍的。并且在每個階段結(jié)束的時候同步。當所有參與同步的線程都取消注冊的時候,Phase就處于終止狀態(tài)。在這種狀態(tài)下,Phaser沒有任務參與者。

Phaser主要功能就是執(zhí)行多階段任務,并保證每個階段點的線程同步。在每個階段點還可以條件或者移除參與者。主要涉及方法arriveAndAwaitAdvance()和register()和arriveAndDeregister()。

4)  Networking增強

新增URLClassLoader close方法,可以及時關(guān)閉資源,后續(xù)重新加載class文件時不會導致資源被占用或者無法釋放問題。

5)  MultithreadedCustom Class Loaders

解決并發(fā)下加載class可能導致的死鎖問題,這個是jdk1.6的一些新版本就解決了,jdk7也做了一些優(yōu)化。

Java1.8

1.  接口的默認方法

Java1.8以前,接口里的方法要求全部是抽象方法,java 8允許我們給接口添加一個非抽象的方法實現(xiàn),只需要使用 default關(guān)鍵字即可。

2.  lambda表達式

它將允許我們將行為傳到函數(shù)里。在Java 8之前,如果想將行為傳入函數(shù),僅有的選擇就是匿名類,需要6行代碼。而定義行為最重要的那行代碼,卻混在中間不夠突出。Lambda表達式取代了匿名類,取消了模板,允許用函數(shù)式風格編寫代碼。這樣有時可讀性更好,表達更清晰。

3.  函數(shù)式接口

如果一個接口定義個一個抽象方法,那么這個接口就成為函數(shù)式接口。一個函數(shù)式接口非常有價值的屬性就是他們能夠用lambdas來實例化。

4.  方法與構(gòu)造函數(shù)引用

使用關(guān)鍵字來傳遞方法或者構(gòu)造函數(shù)引用。

5.  Lambda作用域

在lambda表達式中訪問外層作用域和老版本的匿名對象中的方式很相似。你可以直接訪問標記了final的外層局部變量,或者實例的字段以及靜態(tài)變量。

6.  訪問局部變量

可以直接在lambda表達式中訪問外層的局部變量。

7.  訪問對象字段與靜態(tài)變量

和本地變量不同的是,lambda內(nèi)部對于實例的字段以及靜態(tài)變量是即可讀又可寫。該行為和匿名對象是一致的。

8.  訪問接口的默認方法

JDK1.8 API包含了很多內(nèi)建的函數(shù)式接口,在老Java中常用到的比如Comparator或者Runnable接口,這些接口都增加了注解以便能用在lambda上。

Java 8API同樣還提供了很多全新的函數(shù)式接口來讓工作更加方便,有一些接口是來自Google Guava庫里的,即便你對這些很熟悉了,還是有必要看看這些是如何擴展到lambda上使用的。

感謝你能夠認真閱讀完這篇文章,希望小編分享jdk1.7和jdk1.8有什么區(qū)別內(nèi)容對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,,關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,遇到問題就找創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,,詳細的解決方法等著你來學習!

本文名稱:jdk1.7和jdk1.8有什么區(qū)別-創(chuàng)新互聯(lián)
URL地址:http://jinyejixie.com/article26/pigcg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、定制網(wǎng)站、App設(shè)計、自適應網(wǎng)站、品牌網(wǎng)站建設(shè)、響應式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計
双鸭山市| 磐安县| 河池市| 星座| 福清市| 习水县| 淮滨县| 娄底市| 汕头市| 四平市| 姚安县| 南汇区| 清远市| 赤峰市| 桂林市| 宽城| 汝城县| 绥滨县| 云梦县| 大荔县| 黑龙江省| 年辖:市辖区| 鞍山市| 阳春市| 靖西县| 台湾省| 建湖县| 虹口区| 岢岚县| 乐亭县| 东乡| 屏东县| 佛坪县| 四川省| 永昌县| 遂溪县| 宁远县| 蛟河市| 乌苏市| 宁明县| 鄂托克旗|