1. gzyueqian
      18529173453
      首頁 > 新聞中心 > > 正文

      java的線程安全四種方式五個(gè)等級

      更新時(shí)間: 2007-06-04 10:34:36來源: 粵嵌教育瀏覽量:649


        四種方式 sychronized關(guān)鍵字

        sychronized method(){}
        sychronized (objectReference) {/*block*/}
        static synchronized method(){}
        sychronized(classname.class)

        其中1和2是代表鎖當(dāng)前對象,即一個(gè)對象就一個(gè)鎖,3和4代表鎖這個(gè)類,即這個(gè)類的鎖
        要注意的是sychronized method()不是鎖這個(gè)函數(shù),而是鎖對象,即:如果這個(gè)類中有兩個(gè)方法都是sychronized,那么只要有兩個(gè)線程共享一個(gè)該類的reference,每個(gè)調(diào)用這兩個(gè)方法之一,不管是否同一個(gè)方法,都會用這個(gè)對象鎖進(jìn)行同步。鎖類的3和4類推,即該類的不同reference調(diào)用了sychronized區(qū)段的咚咚就會受類鎖的控制
        
        還有,如果兩個(gè)函數(shù)調(diào)用的先后順序不能被打斷,那么可以有個(gè)專門的鎖對象來完成這個(gè)任務(wù):
        class MyLock
        {
           synchronized getLock()
           {
             //####還沒寫完
           }
        }
        
        五個(gè)等級  參見effective java Item 52 : Document thread safety
        
        immutable  不可變對象
        thread-safe 線程安全的,可以放心使用,如java.util.Timer
        conditionally thread-safe 條件線程安全的,如Vector和Hashtable,一般是安全的,除非存在幾個(gè)方法調(diào)用之間的順序不能被打斷,這時(shí)可以用額外的鎖來完成
        thread-compatible 可以使用synchronized (objectReference)來協(xié)助完成對線程的調(diào)用
        thread-hostile 不安全的
        
        wait & notifyAll
        
        在循環(huán)中使用wait 使用notifyAll而不是notify
        
        pipe
        
        java中也有pipe的,四個(gè)類:PipedInputStream, PipedInputReader, PipedOutputStream, PipedOutputWriter 下面是一段生產(chǎn)者消費(fèi)者的代碼(摘自core javaII):
        
          /* set up pipes */
          PipedOutputStream pout1 = new PipedOutputStream();
          PipedInputStream pin1 = new PipedInputStream(pout1);
          PipedOutputStream pout2 = new PipedOutputStream();
          PipedInputStream pin2 = new PipedInputStream(pout2);
          /* construct threads */
          Producer prod = new Producer(pout1);
          Filter filt = new Filter(pin1, pout2);
          Consumer cons = new Consumer(pin2);
          /* start threads */
          prod.start(); filt.start(); cons.start();
        

      免費(fèi)預(yù)約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 一本久久a久久精品综合夜夜 | 中文字幕在线视频网站 | 亚洲中文字幕乱码一区二区三区 | 一本色道久久综合亚洲精品高清 | 亚洲Av一级特黄大片 | 亚洲午夜久久久久久久久久 |