系统相关
首页 > 系统相关> > 简单个人理解(一):对于时间片和Java中进程和线程

简单个人理解(一):对于时间片和Java中进程和线程

作者:互联网

简单个人理解(一):对于时间片和Java中进程和线程


一.时间片

       如果大家想要清楚清晰的了解进程和多线程的关系,那我们就不得不先提一个叫做时间片的东东,让我们先来瞅瞅百度词条是怎么说的:

其实时间片说到底是操作系统给每个进程划分的最小的在cpu中进行处理的最小时间段。咦,进程,那进程又是啥呢?                                                                                
   二.什么是进程

依旧是先看百度百科词条哟!

是不是看完仍有一丝疑惑?这是啥,看完表示头大好吧!

其实你可以这么理解呀,依玩英雄联盟为例,我们来简单解释下:

      Q:什么叫进程是正在运行的程序的实例  ?

      A:你打开联盟是不是就会运行一个叫做LOL的进程啊!不然它就在那儿就只是一个图标好吧。

      Q:为啥每一个进程都有它自己的地址空间,进程是一个“执行中的程序  ?

      A:其实我们下载的游戏都是存在磁盘上的,当我们运行它时,读取关键的数据,写入到内存中,这样就有了再内存中的一          个独特的地址空间(里边存有英雄皮肤什么)。

一个进程对应一个应用程序。在java的开发环境下启动JVM,就表示启动了一个进程。在同一个操作系统中,可以启动多个进程,其实进程就是具有独立功能,从而进行资源分配的最小单位,而进程又是由许多线程组成的。每启动一个进程,系统就会为它分配地址空间,建立数据表来维护程序的代码段、数据结构段(堆栈段和数据段)。

好的,我们成功的又引入了下一个问题什么是线程!

三.什么是线程:

先瞅词条:

说到线程这就涉及比较多了,多线程,线程栈,并发和并行

个人理解:


   线程:就是一系列方法调用(main方法进栈到main中一系列方法的调用入栈依次出栈到main出栈叫做一个线程)线程栈里的每一个方法都是拷贝过来的,称为栈帧。(帧是最小单元)
   线程栈:可以简单理解为是一系列函数调用的栈控制。线程方法调用    控制mian方法进栈,对应的里面的方法依次进栈按循序调用方法,一个方法进栈后若是没有调用其他方法会执行一次直接出栈,若是有调用其他方法会按顺序继续调用其他方法,先后进栈出栈,直到方法内没有调用其他方法,执行后出栈。

并发:

指两个或多个事件在同一个时间段内发生,交替执行。就好比如你在看书的时候像听歌,但你只能选一个,就只好看书和听歌交替进行

并行:

指两个或多个事件在同一时刻发生,同时执行。依旧是上边的例子,不过这次可以边听歌边看书了,同时进行

需要注意的细节:

进程和进程之间的内存是独立的
线程与多线程

线程是一个进程中的执行场景。一个进程可以启动多个线程

多线程作用不是为了提高执行速度,而是提高应用程序的使用率

线程和线程共享“堆内存和方法区内存”,栈内存是独立的,一个线程一个栈

由于多线程在来回切换,所以给现实世界中的人类一种错觉:感觉多个线程在同时并发执行。


假如我们定义一个main方法对输入的一个数据进行处理,main方法里包含A,B,C三个方法,其中A方法里进行一次+1,B方法里进行一次+5,然后再调用两次A方法,C方法里调用一次A,一次B方法。
       那么我们的线程栈的流程应该是 main方法进栈,然后A进栈,因为A方法里没有调用其他方法,所以A方法出栈,B方法进栈,执行一次+5然后调用两次A依次进出栈,C方法进栈,调用A方法,B方法。
       **进出栈顺序依次是:main进栈---A进栈---A出栈---B进栈---A进栈---A出栈---A进栈---A出栈---B出栈---C进栈---A进栈---A出栈---B进栈---A进栈---A出栈---A进栈---A出栈---B进栈---C进栈---main进栈**

一些个人理解
多线程
main方法是对外界调用的
两个线程时回生成俩个线程栈,拷贝两个方法以及在方法内部声明的变量,这两个方法不互相干扰
执行main时遇到不同的线程,每个线程拷贝一个方法,但是对同一个变量进行操作。
每一个线程对于共同变量进行操作是会先拷贝一份方法,再进行操作再改数据,线程不安全,会产生脏数据
main方法属于主线程   
maib方法里调用的,属于子线程
拷贝只能拷贝栈里的,堆里的是公共的
拷贝的是指针
栈帧和顺序指令相关的放在栈里,没有指令顺序的放在堆里
栈帧》》变量表》》各自在堆里的地址
引用类型k没有具体空间,所以记的同一个地址

 

凝孑·哒哒哒 发布了1 篇原创文章 · 获赞 1 · 访问量 31 私信 关注

标签:调用,出栈,线程,进程,Java,进栈,方法
来源: https://blog.csdn.net/nn1656353506/article/details/104078255