这是我在写Java 并发程序的时候遵循的一些最佳实践:

  1. 给线程命名,这样可以帮助调试。
  2. 最小化同步的范围,而不是将整个方法同步,只对关键部分做同步。
  3. 如果可以,更偏向于使用 volatile 而不是 synchronized。
  4. 使用更高层次的并发工具,而不是使用 wait() 和 notify() 来实现线程间通信,BlockingQueue,CountDownLatch 及 Semeaphore。
  5. 优先使用并发集合,而不是对集合进行同步。并发集合提供更好的可扩展性。