当前位置: 首页 > news >正文

网站经营性质广州疫情最新情况

网站经营性质,广州疫情最新情况,极简风格 wordpress,免费的网站推广怎么做效果好?文章目录 一、List二、Set三、Map 提示:以下是本篇文章正文内容,下面案例可供参考 一、List 代码如下(示例): public class ZZZZZZZZZZ {public static void main(String[] args) {// ArrList 非线程安全的集合List&l…

文章目录

  • 一、List
  • 二、Set
  • 三、Map


提示:以下是本篇文章正文内容,下面案例可供参考

一、List

代码如下(示例):

public class ZZZZZZZZZZ {public static void main(String[] args) {// ArrList 非线程安全的集合List<String> list1 = new ArrayList<>();for (int i = 0; i < 30; i++) {new Thread(() -> {// 多个线程同时向 ArrayList 添加元素list1.add(UUID.randomUUID().toString().substring(0, 8));System.out.println(list1);}).start();}}
}

输出结果

Exception in thread “Thread-1” Exception in thread “Thread-0” Exception in thread “Thread-4” Exception in thread “Thread-25” Exception in thread “Thread-23” Exception in thread “Thread-17” Exception in thread “Thread-18” Exception in thread “Thread-27” java.util.ConcurrentModificationException并发修改异常,由于ArrayList 不是线程安全的容器,多个线程并发添加元素,会导致竞争现象,最终产生该异常

故障出现

java.util.ConcurrentModificationException

导致原因

多线程并发争抢修改导致

解决方法

  • 使用线程安全的容器,例如:Vector,在该类中每个方法都加上了 synchronized,不会导致线程安全问题,但是由于锁的粒度太细,会导致程序的速度较慢。
  • 使用集合工具类的线程安全的方法,如:
static <T> List<T> Collections.synchronizedList(List<T> list)
  • juc 下面的 CopyOnWriteArrayList,该类使用使用 ReentrantLock 加锁解锁,每次添加新元素就会加锁,然后开辟比旧数组多1的空间,将原数组全部拷贝进去,再将新元素加到最后一个位置。由于每次添加元素都会拷贝原数组,如果原数组很大,就会对内存资源造成很大的消耗,因此适合读多写少的场景。源码如下:
             public boolean add(E e) {final ReentrantLock lock = this.lock;lock.lock();try {Object[] elements = getArray();int len = elements.length;Object[] newElements = Arrays.copyOf(elements, len + 1);newElements[len] = e;setArray(newElements);return true;} finally {lock.unlock();}}

二、Set

代码如下(示例):

public class ZZZZZZZZZZ {public static void main(String[] args) {// 非线程安全的 HashSetSet<String> set = new HashSet<>();for (int i = 0; i < 30; i++) {new Thread(() -> {set.add(UUID.randomUUID().toString().substring(0, 8));System.out.println(set);}).start();}}
}

故障出现

java.util.ConcurrentModificationException

导致原因

多线程并发争抢修改导致

解决方法

  • 使用集合工具类的线程安全的方法,如:
static <T> Set<T> Collections.synchronizedList(Set<T> s)
  • juc 下面的 CopyOnWriteArraySet,底层还是 CopyOnWriteArrayList,源码的构造方法如下:
    public CopyOnWriteArraySet() {al = new CopyOnWriteArrayList<E>();}

三、Map

代码如下(示例):

public class ZZZZZZZZZZ {public static void main(String[] args) {// 非线程安全的 HashMapMap<String, String> map = new HashMap<>();for (int i = 0; i < 30; i++) {new Thread(() -> {map.put(Thread.currentThread().getName(), UUID.randomUUID().toString().substring(0, 8));System.out.println(map);}).start();}}
}

故障出现

java.util.ConcurrentModificationException

导致原因

多线程并发争抢修改导致

解决方法

  • 使用线程安全的容器,如:ConcurrentHashMap

  • 使用集合工具类的线程安全的方法,如:

static <K, V> Map<K, V> Collections.synchronizedMap(Map<K, V> m)
http://www.bjxfkj.com.cn/article/1040.html

相关文章:

  • 国内虚拟主机WordPressseo专员岗位要求
  • 展览网站建设方案沈阳seo整站优化
  • 网站推广方案200字网站建设合同模板
  • 做企业网站需要什么资料企业推广哪个平台好
  • 2018网站的建设与维护前景如何建造一个网站
  • 县城做信息网站赚不赚钱网站推广优化怎样
  • 专业北京网站建设公司百度推广助手app下载
  • 网站开发需解决什么问题seo公司上海牛巨微
  • 做聚划算网站南宁seo规则
  • 做电脑网站手机能显示不出来前端培训
  • 你做网站群好朋友的作文精准网络营销推广
  • 石景山上海网站建设关键词怎么做快速的有排名
  • 网站开发配置2021年关键词有哪些
  • 做网站 聊城广州竞价托管代运营
  • 营销网站建设收费标准百度一下打开网页
  • 编辑网站绑定武汉seo管理
  • 鬼畜做的青龙游戏网站云南网络推广服务
  • 网上建立网站国际网站平台有哪些
  • 网站解析什么意思网红营销
  • 晋江市规划局建设网站软服业营收破334亿
  • 优质的广州做网站seo团队管理系统
  • 做汽车团购的网站建设网址导航推广
  • 宁波网站建设公司信息查询免费永久注册顶级域名网站
  • 做电商网站都需要学什么软件文章优化关键词排名
  • 受欢迎的商城网站建设昆明网络推广方式有哪些
  • 网站备案在哪里审批腾讯企点是干嘛的
  • wordpress has_post_thumbnail东莞网络优化哪家公司好
  • 网站图标下载免费网站提交入口
  • 如何给一个公司做网站今日热点新闻
  • 企业网站托管方案哪有学电脑培训班