Java并发编程 基础知识学习
通过对课程的学习,以及显示大厂招聘的需要,一个小白决定开始学习一些Java并发编程的一些知识。本人初次接触java并发编程,以网上知识学习总结为主。
一、为什么要进行Java多线程编程
由于学过一点的操作系统的相关知识,程序、进程、线程、并行、并发、上下文切换的一线基础概念就不叙述了(如有不是很清楚,可以先学习学习操作系统的相关知识)。
一个普通的Java SE程序启动后就是一个进程,它提供资源转载的空间,具体的调度并不是由进程完成,而是由进程来完成的。一个java se的程序从mian函数开始之后,进程启动,为整个程序提供各种资源,而此时将启动一个线程,这个线程就是主线程,它将调度资源,进行具体的操作。而Thread、Runnable的开启的线程是主线程下的子线程,是父子关系,此时的java程序即为多线程的,这些线程共同惊醒资源的调度和执行。
为什么要是用多线程:
使用多线程的理由之一就是与进程相比,它是一种花销更小,切换更快的多任务操作方式。在Linux的系统下,启动一个新的程序必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种“昂贵”的多任务方式。而在进程中的同时运行多个线程,它们彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启动一个进程所花费的时间跟空间,而且,线程间彼此切换所需要的时间远远小于进程间切换所需的时间。
其次,使用多线程可以方便通信,提高程序响应,充分利用多核CPU,提升CPU利用率等等。
二、JMM(Java内存模型)
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
恰当说JMM描述的是一组规则,通过这组规则控制程序中各个变量在共享数据区域和私有数据区域的访问方式,JMM是围绕原子性,有序性、可见性展开的。
对JMM这个还是需要进一步的学习,还是有些许的不理解,后续继续完善。

浙公网安备 33010602011771号