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