美文网首页
线程安全-同步容器

线程安全-同步容器

作者: 墨平语凡 | 来源:发表于2018-06-03 10:34 被阅读0次
container.png

同步容器不一定是线程安全的

比如

package io.haitaoc.concurrency.example.syncContainer;



import io.haitaoc.concurrency.annotation.NotThreadSafe;

import java.util.Vector;

@NotThreadSafe
public class VectorExample2 {

    private static Vector<Integer> vector = new Vector<>();

    public static void main(String[] args) {

        while (true) {

            for (int i = 0; i < 10; i++) {
                vector.add(i);
            }

            Thread thread1 = new Thread() {
                public void run() {
                    for (int i = 0; i < vector.size(); i++) {
                        vector.remove(i);
                    }
                }
            };

            Thread thread2 = new Thread() {
                public void run() {
                    for (int i = 0; i < vector.size(); i++) {
                        vector.get(i);
                    }
                }
            };
            thread1.start();
            thread2.start();
        }
    }
}

removeget操作顺序不同导致错误,需要在调用端进行额外线程同步处理才能使其安全

相关文章

  • 并发编程

    同步容器 1、同步容器的思路:隐藏状态、对象访问加锁2、同步容器单个操作都是线程安全的,但是复合操作不是线程安全的...

  • 同步容器

    同步容器用于解决并发情况下的容器线程安全问题,可以给多线程环境准备一个线程安全的容器对象。线程安全的容器对象: V...

  • 身为JAVA工作者必须了解的实战知识(四)

    一、同步容器类 1. 同步容器类的问题 线程容器类都是线程安全的,但是当在其上进行符合操作则需要而外加锁保护其安全...

  • 理解java集合

    容器的同步控制与只读设置 一、同步控制:多线程并发访问集合的线程安全常用的容器ArrayList、HashSet、...

  • 并发编程学习

    JAVA同步类容器线程是否安全以及介绍: 1,ArrayList,LinkedList线程不安全Vector 对应...

  • 同步容器、并发容器及使用

    1.什么是同步容器?同步容器使用什么方式实现线程安全 同步容器可以简单的理解位通过synchronized来实现同...

  • Collections生成的线程安全容器

    同步容器 [TOC] Collections返回的线程安全容器 Collections类中有一些方法可以返回线程安...

  • JAVA多线程高并发使用示例,包括CountDownLatch/

    知识点 总结了并发多线程相关的线程安全,线程封闭,线程调度,同步容器,并发容器,AQS,JUC等等 包括Count...

  • 线程安全-同步容器

    同步容器不一定是线程安全的 比如 remove和get操作顺序不同导致错误,需要在调用端进行额外线程同步处理才能使其安全

  • Java 中的线程安全容器

    一、同步容器 常用的一些容器例如 ArrayList、HashMap、都不是线程安全的,最简单的将这些容器变为线程...

网友评论

      本文标题:线程安全-同步容器

      本文链接:https://www.haomeiwen.com/subject/ocfjsftx.html