-
Lock对象
-
Executors
-
java.util.concurrent包定义了三个executor接口:-
Executor:支持启动新任务的简单接口; -
ExecutorService:Exector的子接口,它添加了帮助管理单个任务和Executor本身生命周期的特性,补充了submit方法。 -
ScheduledExecutorService:是ExecutorService的子接口,支持将来和/或定期执行任务。
-
-
ThreadPools-
Executors类提供了几个常用的工厂方法:newCachedThreadPool、newSingleThreadExecutor、ScheduledExecutorService相关工厂方法。 - 或者自己构造
java.util.concurrent.ThreadPoolExecutororjava.util.concurrent.ScheduledThreadPoolExecutor实例。
-
-
Fork/JoinForkJoinPoolForkJoinTaskRecursiveTaskRecursiveAction
-
-
集合框架:所有这些集合都通过定义将对象添加到集合的操作与访问或删除该对象的后续操作之间的happens-before关系来帮助避免内存一致性错误。
-
BlockingQueue:BlockingQueue定义了先进先出的数据结构,当尝试添加到满队列或从空队列中获取时将阻塞或超时。 -
ConcurrentMap:ConcurrentMap是java.util.Map的子接口,它定义了一些原子操作。 这些操作仅在存在key时才删除或替换键值对,或者仅在key不存在时才添加键值对。 使这些操作原子化有助于避免同步。 常用实现ConcurrentHashMap,它是HashMap的并发类。 -
ConcurrentNavigableMap:ConcurrentNavigableMap是ConcurrentMap的子接口,支持近似匹配。ConcurrentNavigableMap的标准通用实现是ConcurrentSkipListMap,它是TreeMap的并发类。
-
-
原子变量(
java.util.concurrent.atomic包)java.util.concurrent.atomic包定义了支持对单个变量进行原子操作的类。 所有类都具有get和set方法,它们的工作方式类似于对volatile变量的读写。也就是说,set与同一变量上的任何后续get具有happens-before关系。 -
并发随机数:
ThreadLocalRandom类,用于希望使用来自多个线程或ForkJoinTasks的随机数的应用程序。
对于并发访问,使用ThreadLocalRandom代替Math.random()可以减少竞争并最终提高性能。
【参考】:The Java™ Tutorials:Concurrency