Java多线程学习(Day01)

发布时间 2023-09-16 21:25:57作者: Lollipop_pro

目录

  • 线程简介

  • 线程实现(重点)

  • 线程状态

  • 线程同步(重点)

  • 线程通信问题

进程与线程概念

                                                                          --来自百度百科的解释:        

  进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。    

  线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程。

  看起来有点枯燥,下面我们在Windows系统中寻找进程和线程:

  在Windows中的一些进程

  

  上图中可以发现网易有道词典中有几个进程同时存在,并且拥有属于自己的进程名字和一个唯一属于自己的PID编号。

  在Windows中的线程:

  上图中根据唯一的PID可以发现每个进程拥有的线程数。

 进程与线程的区别

   关于线程与进程之间的关系优秀的文章有很多篇。如果想看详细信息  ->线程与进程,你真得理解了吗_进程和线程的区别_云深i不知处的博客-CSDN博客

  • 本质区别进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位。

  • 包含关系一个进程至少有一个线程,线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。

  • 资源开销每个进程都有独立的地址空间,进程之间的切换会有较大的开销;线程可以看做轻量级的进程,同一个进程内的线程共享进程的地址空间,每个线程都有自己独立的运行栈和程序计数器,线程之间切换的开销小。

  • 影响关系一个进程崩溃后,在保护模式下其他进程不会被影响,但是一个线程崩溃可能导致整个进程被操作系统杀掉,所以多进程要比多线程健壮。

以上区别内容摘抄自网络。

并行,串行,并发的概念

    同样的在这边推荐一篇优秀文章->并发,并行与串行的区别_串行和并行的区别_CrazySnail_x的博客-CSDN博客

  • 并行在生活中便有许多并行例子,例如小张在一边开车一边打电话,小李一边跑步一边聊天。这类在同一时间同时做两件或两件以上的事件的行为就可以称之为并行。
  • 串行:同样的以生活为例。例如过几个月你面临考研,当下你复习毫无章序于是你便写了一个复习计划书,在一个时间段只做一件事将一天安排的满满当当。当你度过这一天在每一个时间段只做一件事的行为便可以称之为串行。
  • 并发同样以生活为例。男生小张约了女生小李在早上10点见面,但是女生小王也约了小张在早上10点见面。小张不想拒绝小李和小王,于是他决定哪一个都不爽约。早上10点小张先跟小李在奶茶店A见了面并跟小王发了个微信说路上堵车大概要十点二十才到,十点二十小张跟小李说要去打个电话处理事情,于是出门去了奶茶店B见了小王。过了一会小张以同样的借口出门去奶茶店A见了小李。就这样在无数的借口中,小张成功在一段时间交替完成了与两个女孩的约会。