初探并发
来源:互联网 发布:汽车振动检测软件 编辑:程序博客网 时间:2024/06/16 05:34
并发是什么?
并发是指两个或多个线程在 同一时间间隔 内发生,并行是指两个或多个线程在 同一时刻 执行。
为什么并发是“同一时间间隔”内发生的?
很多博客甚至百度百科的解释很容易误导我,他们认为(百度百科):并发当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。.这种方式我们称之为并发(Concurrent)。
这样的解释让我认为:并发是“同一时间间隔”内发生是因为cpu只有一个,导致不能同时进行一个以上的线程,然后只能在一个cpu下分时间执行多个线程,所以多个线程是在同一时间间隔内发生的;那么多核或者多cpu下可以同时进行一个以上的线程,此时没有并发吗?
我认为产生这个“同一时间间隔”内发生的根本原因是因为多个线程对共享资源的竞争,而不是cpu数目多少,竞争导致多个线程对共享资源的调用有序,多个线程不能同时调用同一共享资源,同时调用会导致数据错乱,同一时刻只能有一个线程调用共享资源。
偷来的图:
并发意味着多个执行实体(比方说上面例子中的人)可能需要竞争资源(咖啡机),因此就不可避免带来竞争和同步的问题;而并行则是不同的执行实体拥有各自的资源,相互之间可能互不干扰。原文连接:并发是什么
为什么要用并发?
提高资源利用率,响应更快。
并发怎么用?
volatile
synchronized
java.util.concurrent包
总结
在Java中,并发围绕的重点是“对共享资源的竞争”,竞争意味着多线程,所以并发依靠多线程体现。
遗留问题:单核多核或单cpu多cpu下Java多线程分别是怎样的?
阅读全文
0 0
- 初探并发
- 并发初探-更新中
- 并发编程初探
- C++11并发编程(一):并发初探
- Java 高效并发编程初探
- Go 语言并发机制初探
- C++ linux epoll并发服务器模型初探
- java并发编程--同步队列器初探
- java CompletableFuture初探 (并发小实验)
- NHibernate之旅(7):初探NHibernate中的并发控制
- C++11 并发指南一(C++11 多线程初探)
- C++11 并发指南一(C++11 多线程初探)
- C++11 并发指南一(C++11 多线程初探)
- C++11 并发指南系列(C++11 多线程初探)
- C++11 并发指南一(C++11 多线程初探)
- NHibernate之旅(7):初探NHibernate中的并发控制
- C++11 并发指南一(C++11 多线程初探)
- C++11 并发指南一(C++11 多线程初探)
- 今日头条lite:你关心的才是头条【极乐小程序商店出品】
- 在java web项目中调用c++程序简单案例
- 20170522Link memo
- C++关于子类调用父类的构造方法的问题
- XMLElement,XMLDocument 用法
- 初探并发
- 4-2 多项式求值 (15分)
- 如何下载矢量二维电子地图数据
- 高性能mysql笔记(八)查询执行基础
- Android Material Design 兼容库的使用详解
- centos搭建svn服务器
- Ubuntu中设置静态IP和DNS
- java基础学习资料整理
- Struts2框架学习系列(二) Action --struts.xml配置文件详解