这种问题我最喜欢了,我相信你在写并发代码来提高性能的时候也会遵循某些最佳实践。如下 三条最佳实践我以为大多数Java程序员都应该遵循:
1、 给你的线程起个有意义的名字。
这样能够方便找 bug 或追踪。OrderProcessor, QuoteProcessor or TradeProcessor 这种名 字比Thread-1.Thread-2 and Thread-3好多了,给线程起一个和它要完成的任务相关的名 字,全部的主要框架甚至JDK都遵循这个最佳实践。
2、 避免锁定和缩小同步的范围
锁花费的代价高昂且上下文切换更耗费时间空间,试试最低限度的使用同步和锁,缩小临界区。 所以相对于同步方法我更喜欢同步块,它给我拥有对锁的绝对控制权。
3、 多用同步类少用wait和notify
首先,CountDownLatch, Semaphore, CyclicBarrier 和 Exchanger 这些同步类简化了编码操 做,而用wait和notify很难实现对复杂控制流的控制。其次,这些类是由最好的企业编写和 维护在后续的JDK中它们还会不断优化和完善,使用这些更高等级的同步工具你的程序能够 不费吹灰之力得到优化。
4、多用并发集合少用同步集合
这是另一个容易遵循且受益巨大的最佳实践,并发集合比同步集合的可扩展性更好,因此在并 发编程时使用并发集合效果更好。若是下一次你须要用到map,你应该首先想到用
ConcurrentHashMap。
Was this helpful?
0 / 0