Java线程基础(一)

线程相关的概念

在了解线程之前首先要知道什么是进程,打开我们的任务管理器,上面这些正在运行的程序就是一个个的进程。
在这里插入图片描述

进程和线程

提示:该部分仅为个人理解观念,如有错误欢迎指正:

程序:主要指的是没有跑起来的一堆代码,更注重与静止的,没运行的
进程:主要是值运行后的程序,是操作系统分配系统资源(内存空间、CPU)的最小单位
线程:每个进程一个多个线程组成,线程是CPU进行分配和调度的最小单位(分配时间片)

在这里插入图片描述

进程与线程的区别

  1. 内存方面

进程需要的资源更多(堆、方法区、本地方法区)线程轻量级(栈、程序计数器)

线程共享所在进程内存空间(堆、方法区、本地方法区)

  1. 创建和销毁以及上下文切换

    进程需要更多时间和资源,线程更快

  2. 相互通信方面

    进程之间的通信比较麻烦(RPC、网络),线程之间通信更容易(通过进程共享的内存空间)

为什么要使用多线程

线程是程序指令的单独的执行路径,多线程同时执行,大大提高了程序的执行效率

举一个简单的例子:
现在有10个箱子,需要将这些箱子从A搬到B,此时只有一个人(这里的人就好比程序中的线程),假设人每次只能搬一个箱子,每次搬箱子需要花掉10秒,这个时候完成整个工作就需要100秒。但要是有10个人,大家一起搬,那就只需要10秒就能搬完了。

这个时候就要提一下并行和并发,还有同步与异步了

并行和并发

上面提到过,线程是CPU进行分配和调度的最小单位。一个CPU内核一个时间段只能运行一个线程的指令,但是因为CPU执行的速度特别快所以感觉多个程序同时运行
并发一个CPU在多个线程间来回切换执行,不是真正同时执行

并行多个CPU同时执行多个线程,是真正同时执行

同步和异步

程序指令执行过程分为:

同步:多个程序指令排队执行(执行有序,数据更加安全)

异步:多个程序指令同时执行(效率更高,执行无序,数据可能会有问题)

总结

以上为个人理解的一些有关线程基础的理论部分,关于线程的创建以及它的生命周期我放到后面啦!下一篇文章里会放上关于操作的代码,也欢迎互相交流!

有关线程的创建以及生命周期: Java线程基础(二)—— 线程创建.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值