并发知识学习

一、并发和并行的区别

并发是指多个线程操作同一个资源,不是同时执行,而是交替执行,单核CPU,只不过因为CPU的时间片很短,速度太快,看起来是同时执行。(例:张三、李四厨师,共用一口锅炒菜,交替执行)

并行才是真正的同时执行,多核CPU。每个线程使用一个单独的CPU的资源来运行(张三、李四厨师,一人一口锅,一起炒菜)

二、并发概念

并发是指多个线程操作同一个资源,不是同时执行,而是交替执行。
并发是多线程交替的访问同一个资源,该资源本身的特点是同一个时刻只允许一个线程的访问,那么就存在竞争的问题。同一个资源可以是CPU资源,也可以是内存资源。
Java并发的重要性毋庸置疑,其可以最大化的提高计算资源的效率。

三、并发的特性

Java模型是围绕并发过程中如何处理原子性、可见性、有序性3个特征设计的

3.1原子性

如果一个操作是不可分割的,那就是一个原子操作,也叫这个操作具有原子性。相反的,一个操作是可以分割的(如a++ ,它实际上是a=a+1),则就是非原子操作;原子操作是线程安全的,非原子操作是非线程安全的,但是可以通过同步技术(lock)同步数据模型(Concurrent容器等)把非原子操作序列变成线程安全的原子操作。
1、获取原有值
2、对于值进行加1
3、讲结果复制给a

3.2可见性

一个变量被多个线程共享,如果一个线程修改了这个变量的值,其他线程能够立即得知这个修改,则我们称这个修改具有可见性。

3.3 有序性

Java线程的有序性,表现为两个方面:在一个线程内部观察,所有操作都是有序的,所有指令按照“串行(as-if-serial,字面意思是“像排了序一样”,as-if-serial的真正含义是不管怎么重排序,一个单线程程序的执行结果都必须相同)”的方式执行。

在线程间观察,也就是从某个线程观察另一个线程,则所有其它线程都可以交叉并行执行,是正序的,唯一例外的是被同步方法、同步块、volatile等字段修饰的强制同步的代码,需要在线程间保持有序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 学习并发相关知识点的方法有很多,下面是一些建议: 1. 先了解高并发概念,了解高并发的定义和常见的应用场景。 2. 掌握高并发系统的设计原则,了解如何设计可扩展的高并发系统。 3. 深入学习并发编程的基础知识,包括多线程、锁、原子操作、消息队列等。 4. 了解常见的高并发解决方案,如数据库分库分表、缓存、队列等。 5. 多实践,在学习过程中多尝试写一些练习代码,并结合实际项目进行应用。 6. 参考一些比较知名的高并发相关书籍和资料,如《Java并发编程的艺术》、《分布式系统设计模式》等。 7. 可以参加一些在线课程或者培训,有专业的老师指导学习,能够加快学习进度。 ### 回答2: 想要快速学习并发相关的知识点,以下是几个有效的方法: 1.建立基础知识:首先,了解计算机网络和操作系统的基本原理,包括TCP/IP协议、进程与线程、多线程并发编程、文件系统等。这些基础知识对于了解高并发系统是必不可少的。 2.学习并发编程:高并发系统中的多线程编程是关键。深入学习并发编程的概念、技术和模型,掌握线程同步、锁的机制,了解线程池、线程调度等相关概念。 3.研究高性能架构:了解常见的高并发技术架构,如负载均衡、缓存、消息队列、分布式数据库等。学习这些技术的原理、应用场景和实践经验,能够提高系统的性能和并发能力。 4.参与开源项目:参与开源项目是学习并发的好方法,可以通过参与开源项目,了解高并发系统的实现方式和技术选型。在与其他开发者的合作中,可以学到很多实践经验和技巧。 5.实践和项目经验:通过实践项目,亲自设计和实现高并发系统,将理论运用到实践中。在实践中遇到的问题,可以通过查资料、请教他人解决,从错误中学习并改进。 6.持续学习:高并发技术是一个不断变化和发展的领域,需要不断学习和跟进最新的技术动态。可以参加行业的技术大会、培训课程,关注相关的技术论坛、博客等,与业内人士交流,保持对高并发技术的敏感度。 总之,快速学习并发相关的知识需要建立基础知识学习并发编程和高性能架构,参与开源项目,进行实践和项目经验积累,并持续学习和关注最新的技术动态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值