写出3条你遵循的多线程最佳实践

提问者:帅平 问题分类:面试刷题

写出3条你遵循的多线程最佳实践

1 个回答
Rae
Rae 管理员

以下三条最佳实践大多数Java程序员都应该遵循:

给你的线程起个有意义的名字。

这样可以方便找bug或追踪。OrderProcessor,QuoteProcessor or TradeProcessor 这种名字比 Thread-1.Thread-2 and Thread-3 好多了,给线程起一个和它要完成的任务相关的名字,所有的主要框架甚至JDK都遵循这个最佳实践。

避免锁定和缩小同步的范围

锁花费的代价高昂且上下文切换更耗费时间空间,试试最低限度的使用同步和锁,缩小临界区。因此相对于同步方法我更喜欢同步块,它给我拥有对锁的绝对控制权。

多用同步类少用wait和 notify

首先,CountDownLatch, Semaphore,CyclicBarrier 和Exchanger 这些同步类简化了编码操作,而用wait和notify很难实现对复杂控制流的控制。其次,这些类是由最好的企业编写和维护在后续的JDK中它们还会不断优化和完善,使用这些更高等级的同步工具你的程序可以不费吹灰之力获得优化。

多用并发集合少用同步集合

这是另外一个容易遵循且受益巨大的最佳实践,并发集合比同步集合的可扩展性更好,所以在并发编程时使用并发集合效果更好。如果下一次你需要用到map,你应该首先想到用ConcurrentHashMap。

发布于:1个月前 (10-20)
我来回答