Skip to content

Latest commit

 

History

History
24 lines (19 loc) · 1.71 KB

File metadata and controls

24 lines (19 loc) · 1.71 KB

Java 学习笔记

标签: Java


《Clean Code》

并发编程

  • 对象是过程的抽象。线程是调度的抽象。
  • 并发是一种解耦策略。它帮助我们把做什么(目的)和何时做(时机)分解开。
  • 并发有时能够改进性能,但是只在多个线程或处理器之间能够大量分享等待时间的时候管用。
  • 正确的并发是复杂的,即使对于简单的问题也是如此。
  • 谨记数据封装:严格限制对可能被共享的数据的访问。
  • 待了解:java.util.concurrent、java.util.concurrent.atomic和java.util.concurrent.locks。
  • 限定资源:并发环境中有着固定尺寸或数量的资源。如数据库连接。
  • 互斥:每一时刻仅有一个线程能访问共享数据或共享资源。
  • 线程饥饿:一个或一组线程在很长时间内或永久被禁止执行。比如,总是让执行的快的线程先执行,如果执行的快的线程没完没了,则执行的慢的线程就会“挨饿”。
  • 死锁:两个或多个线程互相等待执行结束。每个线程都拥有其他线程需要的资源,得不到其他线程的资源就不会终止,这样就会陷入死锁。
  • 活锁:执行次序一致的线程,每个都想起步,但是发现其他线程已经“在路上”。由于竞步的原因,线程会持续尝试起步,但在很长时间内都无法如愿,甚至永远无法启动。
  • 待了解:生产者-消费者模型、读者-作者模型和宴席哲学家模型。
  • 关键字 synchronized 制造了锁。同一个锁维护的所有代码区域在任意时刻保证只有一个线程执行。
  • POJO 与线程没有涉及,所以,可在线程环境之外测试。