线程与进程以及java线程的实现方式

110 阅读2分钟

什么是进程,什么是线程

进程:是系统资源调度的最小单位 进程我理解为是 点击一个 .exe文件后 ,内存会为进程分配资源,比如说空间,文件等资源。

线程:是CPU调度执行的最小单元 多个线程之间共享同一个进程空间,但是每一个线程有着自己的计算任务。

大体来说,一个程序进入到内存中,内存就会为其分配资源,那么线程就会共享这些资源,其本身 只具有计算功能,说白了就是一堆指令

线程的实现方式

1.通过继承Thread类

image.png

结果示例

image.png

image.png

为什么会出现这种情况呢?? 我觉得是 CPU的多核造成的,就是说一个CPU有多个ALU计算单元,也有对应的份数的寄存器和程序计数器(PC),那么到底是谁先完成就具有了随机性。(注意辨析超线程的概念)

2.实现Runnable接口创建线程

源码里中是如何定义 Runnable接口的

image.png

====================================================================================================================================================================================================================================

有参构造

image.png

我这里的理解是 通过 这个Runnable接口 来构造Thread对象.

首先 调用start()方法一定运行run()方法,但这是Runnable接口的run()方法

做完这个测试案例,说一下我对接口的理解: Runnable接口中也有一个run方法,我是不是可以这样认为,此方法创建线程其实和继承Thread类差不多, 但是由于某些差异化的要求,(我不想继承或者我不能继承的情况下),我使用接口来创建线程。

image.png

image.png

使用方法一是不能够共享对象的,需要创建2个对象,但是方法二可以共享runnable接口的实例。