并发初解

并发是什么

 

自Java9之后应该是引入了不少并行的API,可能用来和并发相比较,会更容易理解些

 

并发:

我:煮饭的时候,边炒菜,焖锅的时候边切菜

 

并行:

我:炒菜

老婆:切菜

 

当然其实这个不是很准确,因为并发也可以有多个处理器(我和老婆都算单独的一个处理器)

 

只是说单处理器,应当没有实际意义上的并行,因为不可能【同时】执行

 

那么我理解的并发,其实意图在于可以尽量以多任务的形式尽快将任务完成,并且任务之间可以切换执行

 

 

那么从这个层面理解,其实在多核处理器中,并发才能体现优势

 

 

而JAVA本身对于多线程的支持,使得我们在业务建模的时候不用过多考虑这点,建模起来也会比较简单些

 

现代编程中应该也会更追求前、中、后台,技术的细节会更多被屏蔽掉

 

使得应用更容易编程

 

 

但并发&多线程也引入新的问题域

1、安全性    - 安全性指错误的事情不会发生;比如一些线程不安全的类,在高并发下,会造成对象破坏的情况

2、活跃性 - 活跃性是指正确的事情,终将发生;比如高并发下,我们希望多一个账户的多次扣款正常进行,且金额正确

3、性能   - 我们在期望安全性和活跃性的同时,会希望正确的事情尽快发生,也就是性能问题 。单线程一般是极限性能,只做一件事,可是多线程,理论上会存在线程切换上下文和访问共享数据(需要进行同步)的问题

 

一般认为安全性和活跃性是必须的,其次要平衡性能。因为有时候性能可能会破坏安全性

posted @ 2020-08-12 17:22  gabin  阅读(102)  评论(0编辑  收藏  举报