背景
标题中含有Java,没办法,用Java语言开发最多,只好如此。文本适合具备【架构师】能力的人阅读,涉及知识较广,相对比较宏观,以后能抽出时间在具体弄弄,总结总结。
并发是什么?
并发,在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。
自我理解的概念(通俗一点地理解):
1、并行,就是同时执行,相互不干扰;
2、并发,就是同时执行,由于要占用的资源有冲突,因此同一时刻只能有一个执行;
举例说明:
1、并行,2个队列分别在2窗口办事,无冲突。
2、并发,2个队列同时在1窗口办事,有冲突,来回切换(计算机中的线程,称为上下文切换)。
关于单核和多核CPU的说明:
1、单核CPU同时只能执行一个进程,同一个时刻,各个进程之间你争我抢,最终也只有一个能够成功执行任务,如此不断重复。
2、多核CPU同时可以执行多个进程,宏观上是并行的,微观上是串行的,这是由于OS(操作系统)的调度系统决定的,OS调度系统把运行时间分为一段段的时间片,并依次选择每个进程,最多执行时间片指定的时长。
多线程的相关知识:
1、进程,操作系统的基本执行单元,是一个操作系统正在执行的程序。
2、线程,则是属于进程上的的一个控制单元,也就是一个进程包含了多个线程。
3、锁,提到线程离不开锁,由于并发,都想赶紧执行,某一个时刻只有一个线程获得锁,成功执行。
IO的相关知识:
1、同步(Synchronous),发出一个调用(函数、方法、接口等)时,没有得到结果之前, 该调用不返回。
2、异步(Asynchronous),发出一个调用(函数、方法、接口等)时,调用在发出之后,不管结果直接返回。
3、阻塞( Blocking ),调用结果返回之前,当前线程会被挂起,调用线程只有在得到结果之后才会继续执行,经典的Java IO。
4、非阻塞( Nonblocking),不能立刻得到结果之前,该调用不会阻塞当前线程,Java NIO。
阻塞和非阻塞这两个概念与程序(线程)等待消息通知(无所谓同步或者异步)时的状态有关,也就是说阻塞与非阻塞主要是程序(线程)等待消息通知时的状态角度来说的。
什么时候用到这些东东呢?
1、如web系统,客户端(浏览器)发出请求--
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/33812.html