并发编程学习 - 线程基础、线程之间的共享与协作 - Java篇

线程与进程的关系(Windows)

进程

进程是操作系统对资源分配的最小单位,其中包括了CPU、内存空间、磁盘IO等,同一进程中多个线程共享该进程中的全部资源,进程与进程之间是相互独立的。进程是拥有一定独立功能的程序,在某个数据集合上的一次运行活动,进程是系统资源分配和调度的一个独立单位。

用户进程与系统进程

进程是在计算机上的一次执行活动,当你运行一个程序时,你就创建了一个进程。

用户进程:通过用户进行创建的进程,称为用户进程,生命周期往往由用户而决定。

系统进程:用于执行操作系统任务的进程称为系统进程,它们的生命周期往往决定于操作系统本身。

线程

线程是CPU调度的最小单位,线程不能单独运行,必须附属于进程运行。

线程是进程的一个实体,是CPU调度和分配的基本单位,它是比进程更小的、能够独立运行的基本单位。

在Java中,JVM(Java Virtual Machine)即为一个进程,在JVM中可以启动多个线程,线程与线程之间运行是相互独立的,但他们能共享进程在操作系统下所申请的所有资源,同时享有CPU的资源调度与分配。本身不拥有任何资源,只拥有在运行时必不可少的资源,如程序计数器、寄存器、栈等。

进程与线程

进程不能单独运行,必须依赖于线程执行,而线程无处不在,Java天生就是多线程,当我们在执行一个main方法时,JVM会为我们启动main、Finalizer、Monitor Ctrl-Break、Attach Listener、Signal Dispatcher、Reference Handler等线程。(如下图)
通过启动main方法,得到当前正在运行的线程信息
以上代码执行后,运行结果如下:
运行以上代码输出结果

CPU核心数与线程数的关系

CPU的核心数决定在同一时间内可以同时执行的线程数,通常情况下,一个CPU核心在同一时间可以执行一个线程,对应关系为1:1,在(Intel)引入超线程技术后,对应关系为1:2,也就是说在同一时间内,一个CPU核心可以执行两个线程。
多核心:一台计算机中央处理器由多个CPU核心组成,多核也指单芯片多处理器(ChipMultiprocessors,简称 CMP),CMP 是由美国 斯坦福大学提出的,其思想是将大规模并行处理器中的 SMP(对称多处理器)集成到同一芯片内,各个处理器并行执行不同的进程。
多线程:SimultaneousMultithreading.简称SMT.让同一个处理器上的多个线 程同步执行并共享处理器的执行资源。
目前主流的CPU都是采用多核心处理器的。(如下图所示)

计算机中中央处理器的结构与操作系统中进程与线程的关系
CPU时间片轮转机制

从上图可以发现,计算机中中央处理器内核为2,逻辑处理器为4,也就是说内核为2的处理器在同一时间可以处理4个线程(采用了Intel的超线程技术)。进程为196,实际线程为2430,那么CPU是如何在逻辑处理器为4的同时处理2430个线程的呢?
我们已知

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值