• Java并发编程总纲


    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,

  • 相关阅读:
    suseoj 1211: 子集和问题 (dfs)
    suseoj 1210: 会场安排问题 (贪心)
    suseoj 1209: 独立任务最优调度问题(动态规划)
    四级词汇(二)
    四级单词(一)
    nyoj 84-阶乘的0 (规律题)
    nyoj 83-迷宫寻宝(二) (计算几何, 叉积)
    nyoj 82-迷宫寻宝(一) (多重BFS)
    nyoj 79-拦截导弹 (动态规划)
    nyoj 78-圈水池 (凸包)
  • 原文地址:https://www.cnblogs.com/suxuan/p/4948739.html
Copyright © 2020-2023  润新知