红宝石星球

凡心所向,素履以往;生如逆旅,一苇以航。

  • High一下

  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 日程表

  • 站点地图

  • 公益404

  • 搜索

J.U.C之AQS—CountDownLatch

发表于 2018-08-02 | 更新于: 2018-08-02 | 分类于 Java之并发编程 | 阅读次数:
字数统计: 1,099 字 | 阅读时长 ≈ 5 分钟

概述

它是一个同步辅助类,通过它可以在一个线程(线程间会轮换)执行countdown() -> count值减至0的期间,保证其他线程会调用await()一直阻塞等待,最后等待的线程执行resume(),所有线程再一起执行另一个实务操作。其中有一个原子性的且不会被重置的计数器以保证上述的实现。

阅读全文 »

AQS介绍

发表于 2018-08-02 | 更新于: 2018-08-02 | 分类于 Java之并发编程 | 阅读次数:
字数统计: 1,998 字 | 阅读时长 ≈ 8 分钟

概述

AQS是J.U.C中的一个非常重要的类。
J.U.C是java.util.concurrent的首字母简称。而AQS是J.U.C下locks包的一个抽象类。

阅读全文 »

并发容器-J.U.C之线程安全集合

发表于 2018-08-02 | 更新于: 2018-08-02 | 分类于 Java之并发编程 | 阅读次数:
字数统计: 965 字 | 阅读时长 ≈ 4 分钟

copyOnWriteArrayList

线程写操作时复制,当有新元素添加到copyOnWriteArrayList时,它先从原有的数组中拷贝出一份,在新开辟出的新数组中写入,写完后再将原数组指向新数组。其操作都是在锁的域中,防止在多线程中复制出多个副本出来,导致原数组指向错误。

特点:

  1. 由于写操作需进行复制操作,耗用内存;当元素内容过多时,该复制操作会占用非常多的内存,导致minor-GC,甚至full-GC。
  2. 虽然最终会保持一致性,但不能用于实时读的操作。
  3. 读写分离,且适合读多写少的场景。
  4. 若add或set的数据不清楚或过多,要慎用!
  5. 读时不加锁,写时加锁。
阅读全文 »

同步容器

发表于 2018-08-02 | 更新于: 2018-08-02 | 分类于 Java之并发编程 | 阅读次数:
字数统计: 2,058 字 | 阅读时长 ≈ 10 分钟

本节内容不仅丰富而且十分有趣实用~

概述

同步容器大致分为两类:

  1. 由List发展来的Vector、Stack;由HashMap发展来的HashTable(其中K,V均不能为null)
  2. Collections工具类提供的静态工厂方法 –> 均为synchronizedXXXX(List/Set/Map)的模样。
阅读全文 »

线程不安全——Part-2

发表于 2018-08-02 | 更新于: 2018-08-02 | 分类于 Java之并发编程 | 阅读次数:
字数统计: 453 字 | 阅读时长 ≈ 2 分钟

Collections部分

一般情况下,我们使用ArrayList、HashSet、HashMap是在方法中定义局部变量,此时由于堆栈封闭的特性,自然不会有线程安全问题。但是,当将其定义为静态域中,且未做线程安全措施时,极有可能会导致多线程并发错误。

阅读全文 »
1…567…12
SupriseMF

SupriseMF

57 日志
4 分类
5 标签
RSS
GitHub 邮件联系我 Google+ StackOverflow
Links
  • 百度
  • 谷歌
  • 知乎
0%
© 2018 SupriseMF 本站总访问量次 本站访客数人次 | Site words total count: 69.1k
由 Hexo 强力驱动
|
主题 — NexT.Gemini v5.1.4