大家好,我是“悠然笑红尘”。
从今天开始,我将和大家一起探讨有关java并发编程以及高并发的技术 。在这里,因为工作的需要,我会不定时的更新文章和大家一起分享知识,欢迎大家多多交流学习!话不多说,直接进入正题。
①什么是并发编程,需要注意哪些重要的点,将自己的代码确保在多线程环境是安全的呢?
一,并发编程三要素
1,原子性:原子,即一个不可再被分割的颗粒。在Java中原子性指的是一个或多个操作要么全部执行成功要么全部执行失败。
2,有序性:程序执行的顺序按照代码的先后顺序执行。(处理器可能会对指令进行重排序)
3,可见性:当多个线程访问同一个变量时,如果其中一个线程对其作了修改,其他线程能立即获取到最新的值。
这是整个并发编程所围绕的核心点,也是重中之重的点。那么谈到并发并发编程的三性,其实就是要正确的了解JMM(JAVA内存模型),在网上很多文章包括面试官,都会谈到的一个重点问题。但是很多人讲的绝对是一个错误的观念。有些人在网上说JMM就是堆呀,栈呀,方法区什么的!其实就是错误的观点,真正的思路这是在谈JAVA内存结构,而JAVA内存模型和JAVA内存结构甚至对象内存模型三个都是不同的概念,后续下篇文章我会具体给大家讲一下这三者的区别。
下面先和从代码上带领大家进入并发编程
②并发编程初体验(简单的计数功能)
notThreadSafe(线程不安全)的计数功能上述此段程序,可能大家理想中的结果应该是5000,但是由于count++不是原子操作,在同一时间200的并发的请求的情况下,得到的结果是会有偏差的:三次运行的结果分别是4998,4993,4996.因此可以得出结论,此代码在多线程环境是不安全的。
③并发与高并发的基本概念
并发:同时拥有两个或多个线程,如果程序在单核处理器上运行,多个线程将交替地换入或换出内存,这些线程是同时“存在”的,每个线程都处于执行过程中的某个状态,如果运行在多核处理器上时,程序中的每一个线程都将分配到一个处理器核上,因此可以同时运行。
高并发:高并发是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。
④简单阐述本次专题针对JAVA并发编程的知识体系过程图,我将用一段时间和大家讨论完下图所有知识点,也欢迎大家多多关注一下,一起讨论知识!
JAVA并发编程知识脑图
网友评论