并发编程

Posted xiajia

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了并发编程相关的知识,希望对你有一定的参考价值。

  对象是过程的抽象,线程是调度的抽象;

 

  并发是一种解耦策略:把做什么(目的)和何时做(时机)分解开;

  响应时机、吞吐量;

  并发防御原则:单一权责原则:分离并发代码与其他代码;

         限制数据作用域:synchronized;谨记数据封装,严格限制对可能被共享的数据的访问;

         使用数据副本;

         线程应尽可能地独立:尝试将数据分解到可被独立线程操作的独立子集;

  了解执行模型:生产者-消费者模型、读者-作者模型、宴席哲学家

  警惕同步方法之间的依赖:避免使用一个共享对象的多个方法;解决:基于客户端的锁定,基于服务端的锁定,适配服务端;

  保持同步区域微小:很难编写正确的关闭代码(死锁);测试线程代码;

 

  限定资源:并发环境中有着固定尺寸或数量的资源;

  互斥:每一时刻仅有一个线程能访问共享数据或共享资源;

  线程饥饿:一个或一组线程在很长时间内或永久被禁止;

  死锁:两个或多个线程互相等待执行结束;每个线程都拥有其他线程需要的资源,得不到其他线程拥有的资源,就无法终止;

  活锁:执行次序一致的线程,每个都想要起步,但发现其他线程已经“在路上”;

     由于竞步的原因,线程会持续尝试起步,但在很长时间内却无法如愿,甚至永远无法启动;

以上是关于并发编程的主要内容,如果未能解决你的问题,请参考以下文章

Go语言学习之旅--并发编程

并发编程路线

java并发编程看啥书比较好

JAVA并发编程:并发编程的认识

并发编程的基础

Java并发编程之美