• Effective Java学习笔记---------并发


    同步访问共享的可变数据

    1. 关键字 synchronized 可以保证在同一时刻,只有一个线程可以执行某一个方法,或者某一个代码块
    2. 当多个线程共享可变数据的时候,每个读或者写数据的线程都必须执行同步

    避免过度同步

    executor (线程池)、task (任务Runnable、Callable)和 stream 优先于线程(Thread)

    并发工具优于wait和notify

    1. java.util.concurrent 中更高级的工具分成三类:Executor Framework 、并发集合(Concurrent Collection)以及同步器(Synchronizer)
    2. Map 的 putIfAbsent(key, value) 方法
    3. 应该优先使用 ConcurrentHashMap ,而不是使用 Collections.synchronizedMap
    4. 同步器(Synchronizer)是使线程能够等待另一个线程的对象,允许它们协调动作。最常用的同步器是 CountDownLatch 和 Semaphore 。较不常用的是 CyclicBarrier 和 Exchanger 。功能最强大的同步器是 Phaser 。
    5. 对于间歇式的定时,始终应该优先使用 System.nanoTime ,而不是使用 System.currentTimeMillis 。因为 System.nanoTime 更准确,也更精确,它不受系统的实时时钟的调整所影响

    文档应包含线程安全属性

    明智谨慎的使用延迟初始化

    不要依赖线程调度器

    任何依赖线程调度器来保证正确性或性能的程序都可能是不可移植的。

  • 相关阅读:
    redis no-appendfsync-on-rewrite
    太神了!开源大佬的SpringBoot+微服务架构笔记,一般人真肝不出来
    BGP高级特性
    Vue3 监听属性
    线上事故竟然是自己的锅!!!
    Nginx正向代理,反向代理,负载均衡
    PAT 甲级 A1021 Deepest Root
    如何用CSS画一个三角形?
    HBase RowKey 的设计原则?
    9.12数字逻辑
  • 原文地址:https://blog.csdn.net/jsq916/article/details/126705473