37-其他提示和技巧
11.14 其他提示和技巧
最后一节包含了一些本章尚未介绍的提示和技巧。
- 只要有可能就使用并发设计模式:在软件工程学中,设计模式是一些常见问题的解决方案。设计模式被广泛地使用在软件开发中,并发应用程序也不例外。例如信令、交汇和互斥,它们都是在具体场景下定义了如何实现并发程序的模式,而且它们都已经被用于并发工具的实现。
- 在最高层面上实现并发:丰富的线程化API(比如Java并发API),提供了不同的能在应用程序中实现并发的类。请尝试使用抽象级别较高的那个。更高的抽象让算法的实现更加简单,而且相比直接使用线程,在性能上它也有着更多的优势。所以,性能也不再是问题。
- 考虑伸缩性:并发算法的一个主要目标是提高计算机资源的利用率,特别是对处理器数量或内核数量的利用率。但是随着时间的推移,这些数量可能会发生变化。在设计并发算法时,不要假定应用程序所能拥有的内核数量,而是应从系统中动态获取。比如,可以在Java中使用
Runtime.getRuntime().availableProcessors()
获取内核的数量,并将其用在算法中,计算要执行的任务数量。 - 相比静态变量和共享变量,请在可能的情况下优先选用
ThreadLocal
变量:ThreadLocal
是一种特殊的变量。由于每个任务都在这个变量中拥有独立的值,所以不需要使用同步机制来保护对它的访问。