Clean Code(代码整洁之道)-并发编程

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/ldc9001/article/details/88819279

     并发是一种解耦策略,它帮我们把做什么(目的)和何时做(时机)分开。解耦的目的和时机能明显改进应用程序的吞吐量和结构。

并发的迷思与误解:

      1).并发总能改进性能:并发有时能改进性能,但只在多个线程或多个处理器之间能分享大量等待时间的时候管用。

      2).编写并发程序无需修改设计:并发设计的算法和单线程系统设计极为不同,目的与时机的解耦往往对系统结构产生巨大影响。

      3).在采用WEB或EJB容器时,理解并发问题并不重要:实际上,了解容器在做什么有利于自身程序的设计及改善。

1.并发防御原则:

      1).单一权责:并发相关代码有自己的开发、修改和声明调优。建议分离并发相关代码和其他代码。

      2).限制数据作用域:更新共享数据的地方越多,越可能出现以下问题:a.破坏了修改共享数据的代码;b.花更多精力保证其他地方不受影响;c.很难找到错误源。建议谨记数据封装,严格限制对可能被修改的数据的访问。

      3).使用数据副本

      4).线程应尽可能独立:每个线程都在自己的世界中,不与其他线程共享数据。

2.并发执行模型:1).生产者---消费者模型;2).阅读---作者模型;3).宴席哲学家模型

3.警惕同步方法之间的依赖:避免使用同一个共享对象的多个方法。必要时可以使用一下三种方法:

      1).基于客户端的锁定:客户端代码在调用第一个方法前锁定服务端,确保锁的范围覆盖了调用最后一个方法的代码。

      2).基于服务端的锁定:在服务端创建锁定服务端的方法,调用所有方法,然后解锁。让客户端调用新方法。

      3).适配服务端:创建执行锁定的中间层。这是一种基于服务端的锁定的新例子,不必修改原服务端代码。

4.尽肯能减少同步区域。

5.不要同时追踪非线程缺陷和线程缺陷,确保代码在线程外可工作。

猜你喜欢

转载自blog.csdn.net/ldc9001/article/details/88819279