Java中级篇之并发编程基础

业务场景:有一下单支付功能,其中设计到了交易支付、短信通知、三方库存单据同步等功能。如果我们采用统一的单线程一条路走到黑,那么当用户付款之后,你疯狂的后台就开始了各种通知、各种操作、可能优化的很好需要2S、3S。显然对于2C程序而言是非常不友好的。那么我们该怎么办?这个时候就引发出并发编程思想、原本单线程去做一件事,现在来三五个线程来做一件事,一个负责付款通知、一个发短信、一个调用三方对接、一个嗑瓜子、运用得当之后,自然会大大提升效率及用户体验,岂不美哉。

 

并发编程:百度百科解释说:“谓并发编程是指在一台处理器上“同时”处理多个任务。并发是在同一实体上的多个事件多个事件在同一时间间隔发生。” 说白话就是一台机器上想要发挥出最大的效率,干好一件事情,就要去多线程的执行,这样就在确保质量的同时,加快执行速度。

举个最简单的例子,常见的电商购物网站,也许你付款之后就会极速的推送给你付款成功,实则后台启用一些新的线程去执行一些发短信、做回调、扣减库存等操作。而你说看到的仅仅只是付款成功后的推送成功信息而已。这样启用多线程去完成一件事(用户下单)的操作,称为并发编程

并发编程介绍完毕可能会有人联想到高并发,那何为高并发?

高并发:首先高并发一般来讲是指一种场景,当然也指一种设计思想,只要符合高并发要求,都可以成为高并发架构。高并发指同一时间(精确至毫秒级),很多的请求来访问我们的服务器,造成我们服务器一瞬间的压力增大。那如果防止高并发,设计一个高并发系统架构,我们后期再说。

不难看出并发与高并发完全是两种场景:

  • 并发:多个线程操作相同的资源,保证线程的安全,合理使用资源。
  • 高并发:服务能同时处理很多请求,提高程序性能。

 

并发编程基础之三要素:

  • 原子性:原子,即一个不可再被分割的颗粒。原子性指的是一个或多个操作要么全部执行成功要么全部执行失败。
  • 可见性:一个线程对共享变量的修改,另一个线程能够立刻看到。(synchronized,volatile)
  • 有序性:程序执行的顺序按照代码的先后顺序执行。(处理器可能会对指令进行重排序)

 

你可能感兴趣的:(Java基础,java,多线程,并发编程)