天天看点

Java并发编程实践笔记之——活跃性和性能(Liveness and Performance)

将整个方法加synchronized,每次只能有一个线程执行,在服务器负载过高的情况下

  • 用户的请求要排队等待处理(比如要做长时间的计算),给用户带来糟糕的体验。也就是并发性差
  • 而且仍会有CPU处于空闲状态

缩小同步代码块的范围

  • 尽量将不影响共享状态且执行时间较长的操作从同步代码块中分离出去,一定不要持有锁
  • 如果使用了同步代码块,就不要再重复使用AtomicLong之类的原子变量,使用两种不同的机制会带来混乱和性能及安全上的问题
  • 设计同步代码块大小的时候,要在简单(对整个方法进行同步)和性能(并发性)之间找到合理的平衡。一定不能为了性能牺牲安全性