中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JDK中Collections的線程安全怎么實現

發布時間:2022-04-06 16:32:06 來源:億速云 閱讀:115 作者:iii 欄目:編程語言

這篇“JDK中Collections的線程安全怎么實現”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“JDK中Collections的線程安全怎么實現”文章吧。

方法:

  1.   public static <T> Set<T> synchronizedSet(Set<T> s) {

  2.     return new SynchronizedSet<T>(s);

  3.     }

  1.  static class SynchronizedSet<E>

  2.       extends SynchronizedCollection<E>

  3.       implements Set<E> {

  4.     private static final long serialVersionUID = 487447009682186044L;


  5.     SynchronizedSet(Set<E> s) {

  6.             super(s);

  7.         }

  8.     SynchronizedSet(Set<E> s, Object mutex) {

  9.             super(s, mutex);

  10.         }


  11.     public boolean equals(Object o) {

  12.         synchronized(mutex) {return c.equals(o);}

  13.         }

  14.     public int hashCode() {

  15.         synchronized(mutex) {return c.hashCode();}

  16.         }

  17.     }


  1.     // use serialVersionUID from JDK 1.2.2 for interoperability

  2.     private static final long serialVersionUID = 3053995032091335093L;


  3.     final Collection<E> c;  // Backing Collection

  4.     final Object mutex;     // Object on which to synchronize


  5.     SynchronizedCollection(Collection<E> c) {

  6.             if (c==null)

  7.                 throw new NullPointerException();

  8.         this.c = c;

  9.             mutex = this;

  10.         }

  11.     SynchronizedCollection(Collection<E> c, Object mutex) {

  12.         this.c = c;

  13.             this.mutex = mutex;

  14.         }


  15.     public int size() {

  16.         synchronized(mutex) {return c.size();}

  17.         }

  18.     public boolean isEmpty() {

  19.         synchronized(mutex) {return c.isEmpty();}

  20.         }

  21.     public boolean contains(Object o) {

  22.         synchronized(mutex) {return c.contains(o);}

  23.         }

  24.     public Object[] toArray() {

  25.         synchronized(mutex) {return c.toArray();}

  26.         }

  27.     public <T> T[] toArray(T[] a) {

  28.         synchronized(mutex) {return c.toArray(a);}

  29.         }


  30.     public Iterator<E> iterator() {

  31.             return c.iterator(); // Must be manually synched by user!

  32.         }


  33.     public boolean add(E e) {

  34.         synchronized(mutex) {return c.add(e);}

  35.         }

  36.     public boolean remove(Object o) {

  37.         synchronized(mutex) {return c.remove(o);}

  38.         }


  39.     public boolean containsAll(Collection<?> coll) {

  40.         synchronized(mutex) {return c.containsAll(coll);}

  41.         }

  42.     public boolean addAll(Collection<? extends E> coll) {

  43.         synchronized(mutex) {return c.addAll(coll);}

  44.         }

  45.     public boolean removeAll(Collection<?> coll) {

  46.         synchronized(mutex) {return c.removeAll(coll);}

  47.         }

  48.     public boolean retainAll(Collection<?> coll) {

  49.         synchronized(mutex) {return c.retainAll(coll);}

  50.         }

  51.     public void clear() {

  52.         synchronized(mutex) {c.clear();}

  53.         }

  54.     public String toString() {

  55.         synchronized(mutex) {return c.toString();}

  56.         }

  57.         private void writeObject(ObjectOutputStream s) throws IOException {

  58.         synchronized(mutex) {s.defaultWriteObject();}

  59.         }

  60.     }

List和Map方法同理,這樣,我們利用了裝實模式,給我們的Map和List穿上了交通協管員的制服,減少了類爆炸,這就是裝實模式;

  1. package org;


  2. public class AImp implements IA {


  3.     public synchronized void say() {

  4.         ;

  5.     }


  6. }


  1. package org;


  2. public interface IA {

  3.  public void say();

  4. }


sychronized標識符是不影響接口的實現和繼承的

以上就是關于“JDK中Collections的線程安全怎么實現”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

白银市| 普陀区| 奉节县| 左贡县| 丹寨县| 襄樊市| 夹江县| 宝丰县| 仁寿县| 桂东县| 德昌县| 东乌| 石柱| 新建县| 汉沽区| 龙陵县| 宁波市| 邢台市| 大英县| 金华市| 宁海县| 廉江市| 山东省| 隆林| 三台县| 华宁县| 陵水| 全州县| 资讯| 尉氏县| 旬阳县| 长岭县| 合川市| 郯城县| 长寿区| 弋阳县| 霍山县| 辽宁省| 班戈县| 萝北县| 茌平县|