代码整洁之道精华——第十三章 并发编程

来源:互联网 发布:怎么利用淘宝联盟省钱 编辑:程序博客网 时间:2024/06/15 23:38

阅阅读本文有两种原因:第一,你是个程序员;第二,你想成为更好的程序员。你如果想成为更好的程序员,那就请细细品味文章内容,它绝不会让你失望。
代码整洁之道教给大家如何编写整洁的代码,而不仅仅是能运行的代码,这对于编程者而言很重要。我在读这本书的第一遍时没什么感觉,但在读第二遍时觉得它确实挺不错的,如果有机会的话我会读第三遍。下面是我在读书过程中摘录的精华内容,希望大家认真对待。各位看官如果读完本文觉得书中的精华内容挺合自己的胃口,那就可以抽出时间认真地读一下这本书。

1、并发是一种解耦策略,他帮助我们把做什么(目的)和何时做(时机)分解开。在单线程应用中,目的与时机紧密耦合,很多时候只要查看堆栈追踪即可断定应用程序的状态。调试这种系统的程序员可以设定断点或断点序列,通过查看到达哪个断点来了解系统状态。
2、解耦目的与时机能明显地改进应用程序的吞吐量和结构。从结构的角度来看,应用程序看起来更像是许多台协同工作的计算机,而不是一个大循环。系统因此会更易于被理解,给出了许多切分关注面的有力手段。
3、建议将并发相关代码与其他代码分离开来。
4、两个线程修改共享对象的同一字段时,可能互相干扰,导致未预期的行为。所以我们应谨记数据封装,严格限制对可能被共享的数据地访问。
5、线程应尽可能地独立,让每个线程在自己的世界中存在,不与其他线程共享资源,每个线程处理一个客户端请求。从不共享的源头接纳所需的数据,存储为本地变量。这样一来,每个线程都像是世界中的唯一线程,没有同步需要。
6、名词解释

名词 解释 限定资源 并发环境中有着固定尺寸或数量的资源,例如数据库连接和固定尺寸读/写缓存等 互斥 每一时刻仅有一个线程能访问共享数据或共享资源 线程饥饿 一个或一组线程在很长时间内或永久被禁止。例如,总是让执行得很快的线程先运行,假如执行得快的线程没完没了,则执行时间长的线程就会“挨饿” 死锁 两个或多个线程互相等待执行结束。每个线程都拥有其他线程需要的资源,得不到其他线程的资源,就无法终止 活锁 执行次序一致的线程,每个都想要起步,但发现其他线程已经“在路上”。由于竟步的原因,线程会持续尝试起步,但在很长时间内却无法如愿,甚至永远无法启动

7、学习下述基础算法,理解其解决方案
资源限定:生产者-消费者模型
线程挨饿:读者-作者模型
死锁、活锁:宴席哲学家
8、测试线程代码

  • 将伪失败看做可能的线程问题
  • 先使非线程代码可工作
  • 编写可拔插的线程代码(可在数个配置环境下运行)
  • 编写可调整的线程代码(线程数量可调)
  • 运行多于处理器数量的线程
  • 在不同平台上运行
  • 调整代码并强迫错误发生

抛开所有细节不谈,代码整洁之道总体来说可以分为以下7点:

  • 运行所有测试
  • 减少重复代码
  • 提高表达力
  • 提早构建简单抽象
  • 类和方法都只做好一件事
  • 尽量减少类和方法的数量
  • 努力,让营地比你来时更干净。努力,让世界比你来时更干净。努力,让代码比你签出时更干净。
1 0