并发编程概括

并发编程是什么

所谓并发编程是指在一台处理器上“同时”处理多个任务。并发是在同一实体上的多个事件。多个事件在同一时间间隔发生

并发编程的目标

并发编程的目标是充分的利用处理器的每一个核,以达到最高的处理性能

并发编程解决的核心问题

第一、分工

所谓分工指的是如何高效的拆解任务并分配给线程
JDK并发包里的Executor,Fork/Join,Future本质上都是线程的分工,除此之外,并发编程领域同时也总结了一些设计模式,基本都是和线程间的公共

1、Executor和线程池
2、Fork/Join
3、Future
4、Balking模式
5、Thread-Per-Message模式
6、Guarded Suepension模式
7、Worker Thread模式
8、生产者-消费者模式
9、两阶段终止模式

第二、同步

所谓同步指的是线程之间如何协作
分好工之后,就是具体的执行了,在项目的执行的过程中,任务之间是有依赖关系的,一个任务的结束后,依赖它的任务就可以开始工作了,后续工作怎么知道要开始工作了呢?这个依靠的就是沟通协作了。Java JDK里提供的CountDownLatch、CyclicBarrier、Phaser、Exchanger都是解决线程协作的问题

1、Semaphore
2、CountDownLatch
3、CyclicBarrier
4、Phaster
5、Exchanger
6、管程

第三、互斥

互斥则是保证同一时刻只允许一个线程访问共享变量
实现互斥的核心技术是锁,Java语言里sychronizrd、SDK里的各种Lock都能解决互斥问题。虽然解决了各种安全性问题,但同时也带来了性能问题,那如何保证安全性的同时又尽量提高性能的呢?Java SDK里提供的ReadWriteLock、StampedLock就可以优化读多写少的场景。还可以使用无锁的数据结构优化,例如Java SDK里提供的原子类都是基于无锁技术实现的。除此之外,还有一些其它方案,原理是不共享变量或者变量只允许读。Java提供了ThreadLocal和final关键字,还有一种Copy-on-write的模式
无锁

1、不变模式
2、线程本地存储
3、CAS
4、Copy-on-Write
5、原子类

互斥锁

1、synchronized
2、Lock
3、WriteReadLock
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值