久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

    1. <style id="76ofp"></style>

      <style id="76ofp"></style>
      <rt id="76ofp"></rt>
      <form id="76ofp"><optgroup id="76ofp"></optgroup></form>
      1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

        手機(jī)站
        千鋒教育

        千鋒學(xué)習(xí)站 | 隨時隨地免費(fèi)學(xué)

        千鋒教育

        掃一掃進(jìn)入千鋒手機(jī)站

        領(lǐng)取全套視頻
        千鋒教育

        關(guān)注千鋒學(xué)習(xí)站小程序
        隨時隨地免費(fèi)學(xué)習(xí)課程

        當(dāng)前位置:首頁  >  技術(shù)干貨  > Java中Vector和SynchronizedList的區(qū)別?

        Java中Vector和SynchronizedList的區(qū)別?

        來源:千鋒教育
        發(fā)布人:xqq
        時間: 2023-10-11 17:52:44 1697017964

        一、Java中Vector和SynchronizedList的區(qū)別

        有了Vector為什么還要有SynchronizedList
        這個問題的答案是從 StackOverflow 中找到的。
        在 JDK 1.2 之前,Collections是獨(dú)立類庫,不是 JDK/JRE 中的一部分。當(dāng)時synchronized性能特別差,很多場景不需要使用同步方式,所以,獨(dú)立類庫的開發(fā)者刪除了同步操作,這個應(yīng)該就是ArrayList的前身。但是,少部分場景還是需要使用同步,于是就有了SynchronizedList,一個可以包裝所有List子類的包裝類,這個類在幾乎所有方法上都加上了synchronized同步,這個設(shè)計(jì)與Vector相似。
        古人說“文人相輕”,其實(shí)在編碼界也是有鄙視鏈的。在這里就是:雖然我的設(shè)計(jì)和你的設(shè)計(jì)類似,但是我的設(shè)計(jì)就是比你的好。不過,Collections確實(shí)設(shè)計(jì)更優(yōu)。

        一個SynchronizedList實(shí)現(xiàn)所有List的同步

        SynchronizedList定位是包裝類,可以包裝所有List的子類。也就是說,無論是ArrayList還是LinkedList都能過實(shí)現(xiàn)同步,完全不會修改底層數(shù)據(jù)結(jié)構(gòu),既實(shí)現(xiàn)的同步,又保留了底層接口的優(yōu)點(diǎn)。比如LinkedList的插入、刪除效率,ArrayList的順序讀取。而且,一個包裝類就解決所有List子類的同步需求,完全不需要重復(fù)實(shí)現(xiàn)一遍。
        相對而言,Vector就比較霸道了,任何想要同步的隊(duì)列,都需要轉(zhuǎn)換為Vector的數(shù)組結(jié)構(gòu)。大家都知道,數(shù)組存儲需要連續(xù)空間,順序讀取效率表現(xiàn)優(yōu)異,但是插入和刪除效率就比較差了。

        總結(jié)

        Vector內(nèi)部結(jié)構(gòu)是數(shù)組,與Collections.synchronizedList(new ArrayList())類似。Vector可以指定擴(kuò)容大小,默認(rèn)是擴(kuò)容到原數(shù)組長度的 2 倍;ArrayList不能指定擴(kuò)容大小,直接擴(kuò)容到原數(shù)組大小的 1.5 倍。SynchronizedList是一個包裝類,可以將List子類都包裝為同步隊(duì)列,從非線程安全隊(duì)列轉(zhuǎn)為線程安全隊(duì)列,沒有性能延遲,直接包裝即可;Vector是一個基于數(shù)組的同步隊(duì)列,其他隊(duì)列想要轉(zhuǎn)換為Vector,需要有數(shù)據(jù)拷貝。SynchronizedList的迭代器沒有做同步,需要用戶自己實(shí)現(xiàn);Vector的迭代器做好了同步,開發(fā)人員不需要關(guān)心同步。Vector至今未標(biāo)記Deprecated,而且隨著 JDK 發(fā)布,也在更新實(shí)現(xiàn)。雖然 JDK 承諾兼容,但是一直沒有標(biāo)記過期,其用意不得而知。

        延伸閱讀:

        二、什么是default方法

        Java 8 發(fā)布以后,可以給接口添加新方法,但是,接口仍然可以和它的實(shí)現(xiàn)類保持兼容。這非常重要,因?yàn)槟汩_發(fā)的類庫可能正在被多個開發(fā)者廣泛的使用著。而Java 8之前,在類庫中發(fā)布了一個接口以后,如果在接口中添加一個新方法,那些實(shí)現(xiàn)了這個接口的應(yīng)用使用新版本的接口就會有崩潰的危險。

        有了Java 8,是不是就沒有這種危險了?答案是否定的。

        給接口添加default方法可能會讓某些實(shí)現(xiàn)類不可用。

        讓我們看下default方法的細(xì)節(jié)。

        在Java 8中,接口中的方法可以被實(shí)現(xiàn)(Java8中的static的方法也可以在接口中實(shí)現(xiàn),但這是另一個話題)。接口中被實(shí)現(xiàn)的方法叫做default方法,用關(guān)鍵字default作為修飾符來標(biāo)識。當(dāng)一個類實(shí)現(xiàn)一個接口的時候,它可以實(shí)現(xiàn)已經(jīng)在接口中被實(shí)現(xiàn)過的方法,但這不是必須的。這個類會繼承default方法。這就是為什么當(dāng)接口發(fā)生改變的時候,實(shí)現(xiàn)類不需要做改動的原因。

        聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
        10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
        請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
        免費(fèi)領(lǐng)取
        今日已有369人領(lǐng)取成功
        劉同學(xué) 138****2860 剛剛成功領(lǐng)取
        王同學(xué) 131****2015 剛剛成功領(lǐng)取
        張同學(xué) 133****4652 剛剛成功領(lǐng)取
        李同學(xué) 135****8607 剛剛成功領(lǐng)取
        楊同學(xué) 132****5667 剛剛成功領(lǐng)取
        岳同學(xué) 134****6652 剛剛成功領(lǐng)取
        梁同學(xué) 157****2950 剛剛成功領(lǐng)取
        劉同學(xué) 189****1015 剛剛成功領(lǐng)取
        張同學(xué) 155****4678 剛剛成功領(lǐng)取
        鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
        董同學(xué) 138****2867 剛剛成功領(lǐng)取
        周同學(xué) 136****3602 剛剛成功領(lǐng)取
        相關(guān)推薦HOT
        Linux I/O復(fù)用中select poll epoll模型的介紹及其優(yōu)缺點(diǎn)?

        一、select模型介紹及其優(yōu)缺點(diǎn)select是一種經(jīng)典的I/O復(fù)用模型,它通過對于指定的一組文件描述符進(jìn)行掃描,來檢測對應(yīng)的I/O事件是否就緒,并返回...詳情>>

        2023-10-11 19:34:02
        Tkinter是什么?

        一、Tkinter是什么Tkinter模塊(Tk 接口)是 Python的標(biāo)準(zhǔn)Tk GUI工具包的接口 .Tk 和 Tkinter可以在大多數(shù)的 Unix 平臺下使用,同樣可以應(yīng)用在 Win...詳情>>

        2023-10-11 19:03:54
        APP開發(fā)時經(jīng)常會陷入哪些誤區(qū)?

        一、APP開發(fā)時經(jīng)常會陷入的誤區(qū)1、只關(guān)注價格便宜任何企業(yè)開發(fā)APP應(yīng)用,都想少花一分是一分,這本是人之常情,但有些企業(yè)在節(jié)省預(yù)算的時候,卻...詳情>>

        2023-10-11 18:57:24
        怎么制作okr?

        一、確定主題和周期在制作OKR前,需要確定主題和周期。主題可以是年度目標(biāo)、季度目標(biāo)、月度目標(biāo)等,周期可以是一年、半年、三個月等。主題和周...詳情>>

        2023-10-11 18:51:29
        python中complex是什么意思?

        一、python中complexpython中complex是復(fù)數(shù)。復(fù)數(shù)(Complex)是 Python 的內(nèi)置類型,直接書寫即可。換句話說,Python 語言本身就支持復(fù)數(shù),而不...詳情>>

        2023-10-11 18:43:39
        亳州市| 内黄县| 大同县| 轮台县| 招远市| 镇巴县| 佛冈县| 胶州市| 濉溪县| 建湖县| 兴隆县| 福海县| 嵊州市| 定陶县| 息烽县| 泽州县| 赤峰市| 虎林市| 含山县| 柯坪县| 苍山县| 漳州市| 怀远县| 蓬安县| 盖州市| 永福县| 凯里市| 南陵县| 三河市| 苍南县| 新干县| 南岸区| 多伦县| 无为县| 彩票| 高雄市| 隆化县| 拜泉县| 南丹县| 南靖县| 确山县|