Javaのスレッドセキュリティ集合クラス

5543 ワード

スレッドセキュリティコレクションクラス
含む:StringBuffer:スレッドセキュリティString:可変クラス、すべてのスレッドセキュリティRandom:スレッドセキュリティVector:Listを実現し、スレッドセキュリティHashtable:Mapを実現し、スレッドセキュリティ
jdk 5.0に追加されたスレッドセキュリティ集合クラスConcurrentHashMap:Mapが実装され、スレッドセキュリティConcurrentSkipListMap:Mapが実装され、スレッドセキュリティCopyOnWriteArrayList:Listが実装され、スレッドセキュリティ
ブロックキューの適用
**キュー:**FIFO、すなわちfirst in first out、先進先出原則
例:
private static BlockingQueue queue = new ArrayBlockingQueue<>(5);
public static void main(String[] args) {

    //      
    new Thread(()->{
        for (int i = 0; i < 10; i++) {
            Product p = new Product(i);
            System.out.println(Thread.currentThread().getName()+"   :"+p);
            try {
                queue.put(p);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }).start();

    //      
    for (int j = 0; j < 5; j++) {
        new Thread(()->{
            for (int i = 0; i < 2; i++) {
                try {
                    Product p = queue.take();
                    System.out.println(Thread.currentThread().getName()+"   :"+p);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }


}

実行結果:
Thread-0   :Product{i=0}
Thread-0   :Product{i=1}
Thread-1   :Product{i=0}
Thread-0   :Product{i=2}
Thread-2   :Product{i=1}
Thread-3   :Product{i=2}
Thread-0   :Product{i=3}
Thread-0   :Product{i=4}
Thread-4   :Product{i=3}
Thread-5   :Product{i=4}
Thread-0   :Product{i=5}
Thread-0   :Product{i=6}
Thread-1   :Product{i=5}
Thread-2   :Product{i=6}
Thread-0   :Product{i=7}
Thread-0   :Product{i=8}
Thread-0   :Product{i=9}
Thread-3   :Product{i=7}
Thread-5   :Product{i=9}
Thread-4   :Product{i=8}