博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java并发编程-总纲
阅读量:7123 次
发布时间:2019-06-28

本文共 1973 字,大约阅读时间需要 6 分钟。

Java 原生支持并发,基本的底层同步包括:

synchronized,用来标示一个方法(普通,静态)或者一个块需要同步执行(某一时刻,只允许一个线程在执行代码块)。
volatile,用来标识一个变量是共享变量(线程不缓存),更新和读取是原子的。
wait,线程等待某一个Object上的事件(notify事件,线程挂起,释放锁),需要在synchronized区中执行。
notify,事件发生后,通知事件,通知一个挂起的线程,需要在synchronized区中执行。
notifyAll,事件发生后,通知所有挂起线程,需要在synchronized区中执行。

Java 并发编程的工具类位于java.util.concurrent包下的,可分为以下几类:

(1)执行单元
Runnable,标识一个类为可执行单元的接口,不关心子线程的返回结果和异常状态(FunctionalInterface)。
Callable,标识一个类为可执行单元的接口,需要知道子线程的返回结果和异常状态(FunctionalInterface)。
Future, Callable执行的结果。
Thread,线程(Runnalbe默认实现类)。

(2)同步器

Java同步器,是若干用于多线程之间同步的类,它们都位于java.util.concurrent包下:
CountDownLatch,闭锁,用于一个或多个线程等待一个事件集的发生(比如,一组线程与主线程之间的同步)。
CyclicBarrier,关卡,用于一组或几组线程要在时间点上达成一致进行下一步动作。
Exchanger,交换器,用于两个线程之间的同步(数据交换)。
Phaser,移相器,它兼具CountDownLatch和CyclicBarrier的功能,是Java 7中新引进的同步器,其主要特点是支持动态增删线程、单向同步和分相操作。
Semaphore,信号量,用于限定资源多线程访问时的许可管理。

(3)并发数据结构

Queue&Deque:

BlockingQueue,

LinkedBlockingDeque,

BlockingDeque,

LinkedBlockingDeque,

ArrayBlockingQueue,

PriorityBlockingQueue,

ConcurrentLinkedDeque,

DelayQueue,

SynchronousQueue,

TransferQueue,

LinkedTransferQueue,

List:

CopyOnWriteArrayList,

Map:

ConcurrentMap,

ConcurrentNavigableMap,

ConcurrentSkipListMap,

ConcurrentHashMap,

Set:

CopyOnWriteArraySet,

ConcurrentSkipListSet

(4)Executor框架集

Executor,
ExecutorService,
Executors,
ExecutorCompletionService,
ScheduledExecutorService,
ScheduledFuture,
ScheduledThreadPoolExecutor,

(5)Fork-Join框架集

ForkJoinTask,
ForkJoinPool,
RecursiveTask,
RecursiveAction,
ForkJoinWorkerThread,

(6)原子变量类(java.util.concurrent.atomic)

AtomicBoolean,
AtomicInteger,
AtomicIntegerArray,
AtomicIntegerFieldUpdater,
AtomicLong,
AtomicLongArray,
AtomicLongFieldUpdater,
AtomicReference,
AtomicReferenceArray,
AtomicReferenceFieldUpdater,
AtomicMarkableReference,
AtomicStampedReference,

(7)Java高级锁(java.util.concurrent.locks)

Lock,
Condition,
AbstractQueuedSynchronizer,
ReentrantLock,
ReadWriteLock,
ReentrantReadWriteLock,
StampedLock,

(8)其它

ThreadLocal,

转载于:https://www.cnblogs.com/suxuan/p/4948739.html

你可能感兴趣的文章
第二章 单表查询 T-SQL语言基础(2)
查看>>
chrome总是崩溃
查看>>
POJ-1751 Highways---确定部分边的MST
查看>>
在oracle中如何退出edit模式
查看>>
Java类和对象初始化
查看>>
AutoFac文档4(转载)
查看>>
STM8S003 上升沿进不去外部中断问题
查看>>
[LeetCode] Longest Palindromic Substring
查看>>
css
查看>>
BZOJ[2780][Spoj]8093 Sevenk Love Oimaster 后缀数组
查看>>
递推置换,交换次数最少得到升序序列
查看>>
js 倒计时
查看>>
LightSwitch登录界面如何设置背景
查看>>
一步步实现 Redis 搜索引擎
查看>>
怎么给pdf添加水印,只需几步轻松解决
查看>>
JavaScript对象 属性
查看>>
正则表达式菜鸟教程
查看>>
Delphi隐藏进程
查看>>
bpclntcmd一条神奇的命令,解决新安装nbu客户端无法连接的问题 (屡试不爽神命令)...
查看>>
CSharp任何可比较的数据类型(大小比较泛型实现方法)封装
查看>>