最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java 集合中的類(lèi)關(guān)于線(xiàn)程安全

 更新時(shí)間:2017年01月19日 14:14:46   投稿:lqh  
這篇文章主要介紹了Java 集合中的類(lèi)關(guān)于線(xiàn)程安全的相關(guān)資料,需要的朋友可以參考下

Java集合中那些類(lèi)是線(xiàn)程安全的

線(xiàn)程安全類(lèi)

在集合框架中,有些類(lèi)是線(xiàn)程安全的,這些都是jdk1.1中的出現(xiàn)的。在jdk1.2之后,就出現(xiàn)許許多多非線(xiàn)程安全的類(lèi)。 下面是這些線(xiàn)程安全的同步的類(lèi):

vector:就比arraylist多了個(gè)同步化機(jī)制(線(xiàn)程安全),因?yàn)樾瘦^低,現(xiàn)在已經(jīng)不太建議使用。在web應(yīng)用中,特別是前臺(tái)頁(yè)面,往往效率(頁(yè)面響應(yīng)速度)是優(yōu)先考慮的。

statck:堆棧類(lèi),先進(jìn)后出

hashtable:就比hashmap多了個(gè)線(xiàn)程安全

enumeration:枚舉,相當(dāng)于迭代器

除了這些之外,其他的都是非線(xiàn)程安全的類(lèi)和接口。

線(xiàn)程安全的類(lèi)其方法是同步的,每次只能一個(gè)訪(fǎng)問(wèn)。是重量級(jí)對(duì)象,效率較低。

其他:

1. hashtable跟hashmap的區(qū)別

hashtable是線(xiàn)程安全的,即hashtable的方法都提供了同步機(jī)制;hashmap不是線(xiàn)程安全的,即不提供同步機(jī)制 ;hashtable不允許插入空值,hashmap允許!

2. 多線(xiàn)程并發(fā)修改一 個(gè) 集合 怎么辦

用老的Vector/Hashtable類(lèi)

StringBuffer是線(xiàn)程安全,而StringBuilder是線(xiàn)程不安全的。對(duì)于安全與不安全沒(méi)有深入的理解情況下,易造成這樣的錯(cuò)覺(jué),如果對(duì)于StringBuffer的操作均是線(xiàn)程安全的,然而,Java給你的保證的線(xiàn)程安全,是說(shuō)它的方法是執(zhí)行是排它的,而不是對(duì)這個(gè)對(duì)象本身的多次調(diào)用情況下,還是安全的??纯聪逻叺睦?,在StringBufferTest中有一個(gè)數(shù)據(jù)成員contents它是用來(lái)擴(kuò)展的,它的每一次append是線(xiàn)程安全的,但眾多次append的組合并不是線(xiàn)程安全的,這個(gè)輸出結(jié)果不是太可控的,但如果對(duì)于log和getContest方法加關(guān)鍵字synchronized,那么結(jié)果就會(huì)變得非常條理,如果換成StringBuider甚至是append到一半,它也會(huì)讓位于其它在此基礎(chǔ)上操作的線(xiàn)程:

public class StringBufferTest {
  private StringBuffer contents = new StringBuffer();
  public void log(String message){
   contents.append(System.currentTimeMillis());
   contents.append("; ");
   contents.append(Thread.currentThread().getName());
   for(int i=0;i<10000;i++){
    contents.append(i);  
     contents.append(message);  //append本身是線(xiàn)程安全的,修改contents時(shí),其它線(xiàn)程無(wú)法訪(fǎng)問(wèn)。
     contents.append("\n");
   }
   contents.append("\n\n");
  }
  public void getContents(){
   System.out.println(contents);
  }
}

class RunThread extends Thread{
  String message;
  StringBufferTest buffer;
  public RunThread(StringBufferTest buffer, String message){
   this.buffer = buffer;
   this.message = message;
  }
  public void run(){
   while(true){
     buffer.log(message);
     buffer.getContents();
   }
  }
  public static void main(String[] args) {
   StringBufferTest ss = new StringBufferTest();
   new RunThread(ss, "you").start();
   new RunThread(ss, "me").start();
   new RunThread(ss, "she").start();
  }
}

        StringBuilder和StringBuffer的方法是一模一樣,就是一個(gè)多線(xiàn)程和一個(gè)單線(xiàn)程的問(wèn)題。線(xiàn)程調(diào)用同一StringBuffer 的append方法,這跟他是不是線(xiàn)程安全沒(méi)有關(guān)系的,除非你的結(jié)果是append的一系列字符串變亂了,那才能說(shuō)明他是線(xiàn)程不安全的。線(xiàn)程安全是指任何時(shí)刻都只有一個(gè)線(xiàn)程訪(fǎng)問(wèn)臨界資源。線(xiàn)程安全 并不是說(shuō)他的一系列操作是同步的 只是對(duì)于他執(zhí)行某個(gè)方法的時(shí)候不允許別的線(xiàn)程去改變。針對(duì)一個(gè)類(lèi)來(lái)說(shuō)是不是線(xiàn)程安全就要看,多個(gè)線(xiàn)程在同時(shí)在運(yùn)行,這些線(xiàn)程可能會(huì)同時(shí)執(zhí)行某個(gè)方法。但是每次運(yùn)行結(jié)果和單線(xiàn)程執(zhí)行的結(jié)果一樣,那么就可以說(shuō)是線(xiàn)程安全的。因?yàn)閘og方法沒(méi)有上鎖,每個(gè)現(xiàn)在在append鎖釋放后,都可能得到cpu的執(zhí)行片段。

但不要對(duì)多線(xiàn)程安全存在誤解:

 public String toString(){
   StringBuffer buffer = new StringBuffer();
   buffer.append('<');
   buffer.append(this.name);
   buffer.append('>');
   return buffer.toString();
  }

       這個(gè)代碼是完全線(xiàn)程安全的,在方法內(nèi)部定義的變量,在每個(gè)線(xiàn)程線(xiàn)程進(jìn)入的時(shí)候都會(huì)創(chuàng)建這個(gè)局部變量!不涉及線(xiàn)程安全問(wèn)題。通常涉及系統(tǒng)安全的變量一般都是成員變量! stringBuffer本身的內(nèi)部實(shí)現(xiàn)是現(xiàn)場(chǎng)安全的!線(xiàn)程安全那是類(lèi)本身提供的功能是安全的。即你提供插入一個(gè)字符串,那么這個(gè)字符串插入是安全的,但是要插入兩個(gè)字符串,兩個(gè)的順序你來(lái)定,這之間如果有別的插入出錯(cuò)就不管類(lèi)的事情了,是你自己代碼的問(wèn)題。

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • SpringBoot實(shí)現(xiàn)文件在線(xiàn)預(yù)覽功能的全過(guò)程

    SpringBoot實(shí)現(xiàn)文件在線(xiàn)預(yù)覽功能的全過(guò)程

    我們開(kāi)發(fā)業(yè)務(wù)系統(tǒng)的時(shí)候,經(jīng)常有那種文檔文件在線(xiàn)預(yù)覽的需求,下面這篇文章主要給大家介紹了關(guān)于SpringBoot實(shí)現(xiàn)文件在線(xiàn)預(yù)覽功能的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • Spring Boot JPA訪(fǎng)問(wèn)Mysql示例

    Spring Boot JPA訪(fǎng)問(wèn)Mysql示例

    本篇文章主要介紹了Spring Boot JPA訪(fǎng)問(wèn)Mysql示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • Spring FactoriesLoader機(jī)制實(shí)例詳解

    Spring FactoriesLoader機(jī)制實(shí)例詳解

    這篇文章主要介紹了Spring FactoriesLoader機(jī)制實(shí)例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Java實(shí)現(xiàn)一鍵將Word文檔轉(zhuǎn)為PDF的兩種方法

    Java實(shí)現(xiàn)一鍵將Word文檔轉(zhuǎn)為PDF的兩種方法

    本文主要介紹了Java實(shí)現(xiàn)一鍵將Word文檔轉(zhuǎn)為PDF的兩種方法,分別使用Apache POI和Docx4J結(jié)合iText庫(kù)來(lái)實(shí)現(xiàn)Word轉(zhuǎn)PDF,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-04-04
  • 在Mybatis @Select注解中實(shí)現(xiàn)拼寫(xiě)動(dòng)態(tài)sql

    在Mybatis @Select注解中實(shí)現(xiàn)拼寫(xiě)動(dòng)態(tài)sql

    這篇文章主要介紹了在Mybatis @Select注解中實(shí)現(xiàn)拼寫(xiě)動(dòng)態(tài)sql,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • 解決fcitx輸入法在IDEA中輸入法候選框無(wú)法跟隨光標(biāo)移動(dòng)的問(wèn)題

    解決fcitx輸入法在IDEA中輸入法候選框無(wú)法跟隨光標(biāo)移動(dòng)的問(wèn)題

    這篇文章主要介紹了解決fcitx輸入法在Intellij IDEA開(kāi)發(fā)工具中輸入法候選框無(wú)法跟隨光標(biāo)移動(dòng)的問(wèn)題,代碼簡(jiǎn)單易懂對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Jmeter常見(jiàn)函數(shù)使用方法匯總

    Jmeter常見(jiàn)函數(shù)使用方法匯總

    這篇文章主要介紹了Jmeter函數(shù)使用方法匯總,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 一文帶你掌握J(rèn)ava?LinkedBlockingQueue

    一文帶你掌握J(rèn)ava?LinkedBlockingQueue

    LinkedBlockingQueue?是一個(gè)可選有界阻塞隊(duì)列,這篇文章主要為大家詳細(xì)介紹了Java中LinkedBlockingQueue的實(shí)現(xiàn)原理與適用場(chǎng)景,感興趣的可以了解一下
    2023-04-04
  • Spring MVC 擴(kuò)展和 SSM 框架整合步驟詳解

    Spring MVC 擴(kuò)展和 SSM 框架整合步驟詳解

    在前端頁(yè)面后后臺(tái)交互的過(guò)程中,需要一種格式清晰、高效且兩端都可以輕松使用的數(shù)據(jù)格式做交互的媒介,JSON正可以滿(mǎn)足這一需求,下面學(xué)習(xí)使用Spring MVC 框架處理JSON數(shù)據(jù),感興趣的朋友一起看看吧
    2024-08-08
  • Spring基于@Conditional條件化裝配bean

    Spring基于@Conditional條件化裝配bean

    這篇文章主要介紹了Spring @Conditional條件化裝配bean,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04

最新評(píng)論

东方市| 遂溪县| 秀山| 富平县| 姜堰市| 清涧县| 保靖县| 闽清县| 霍州市| 江永县| 临漳县| 绥宁县| 广元市| 金堂县| 承德县| 武冈市| 耒阳市| 苍梧县| 类乌齐县| 金川县| 海晏县| 东宁县| 涞水县| 伊川县| 时尚| 闻喜县| 黎城县| 凤山县| 新建县| 和平县| 类乌齐县| 宾阳县| 丰台区| 潢川县| 紫阳县| 珲春市| 五原县| 镇巴县| 务川| 峡江县| 阳泉市|