【Java 并发编程】【01】线程概述及应用

多线程需要学习的相关知识:

  1. JavaSE : 多线程基础
  2. JUC : 多线程高级

一些概念

1.程序

完成某个任务、功能 用某种语言编写的一组指令的集合。

2.软件

  • 软件 = 程序 + 程序运行所需文件;
  • 一个软件中可能有很多个程序

3.进程

  • 程序的一次运行。
  • 一个进程就是一个正在运行中的程序,一款软件对应一个进程;
    在这里插入图片描述
  • 每个软件(每个进程)之间是独立的,独立体现在资源上;
    操作系统在分配资源(内存)的时候,是以进程为单位的。因此进程之间进行通信(交换数据)时,成本比较高,相当于两个软件之间进行通信,因此引入线程。

4.线程

  • 线程是进程中的某一条执行路径
  • 同一个进程中的多个线程之间是可以共享部分内存的(方法区、堆),每个线程的部分内存又是独立的。
  • 同一个进程的线程之间数据交换成本较低,线程的切换对于CPU和操作系统来说,成本比进程低的多。因此通常用多线程来代替多进程方式,实现多任务开发。
  • 线程是CPU调度的最小单位;进程是系统分配内存资源的最小单位;

5.并行和并发

一个CPU核同一时刻执行一个程序,因此在单核 cpu 下,线程实际还是串行执行的。
CPU核数 = 并行度

并发(Concurrent)
在这里插入图片描述
操作系统中有一个组件叫做任务调度器,将 cpu 的时间片(windows 下时间片最小约为 15 毫秒)分给不同的程序使用,只是由于 cpu 在线程间(时间片很短)的切换非常快,人类感 觉是同时运行的 。一般会将这种线程轮流使用 CPU 的做法称为并发(concurrent)

并行

多核 cpu下,每个核(core) 都可以调度运行线程,这时候线程可以是并行的,不同的线程同时使用不同的cpu在执行。两个进程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。
在这里插入图片描述
如图所示,是并行和并发共存;


多线程听上去是非常专业的概念,但其实非常简单:单线程的程序只有一条执行路径,多线程的程序则包含多条执行路径,多条执行路径之间互不干扰,例如:

(1)单线程:
一旦前面的车,阻塞了,后面的车只能一直等待
在这里插入图片描述
(2)多线程:
其中一条车道阻塞了,不影响其他车道
在这里插入图片描述

线程的应用

1.异步调用

在这里插入图片描述
同步调用案例
在这里插入图片描述
说白了就是单线程,必须等前面干完了才能干下一步
异步调用案例
在这里插入图片描述
异步调用说白了就是将一部分任务交给一个线程去做

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值