多线程-多线程的初步认识

1.认识进程、线程、任务

        进程(Process):是程序运行的实例,是系统分配资源的基本单位。(例如:一个正在运行的浏览器就是一个进程)

        线程(Thread):是进程中可独立执行的最小单位,即一个独立的执行流,多个线程之间可以执行多份代码。

        任务:线程所要完成的计算就称为任务。

2.有关线程

        2.1 为什么需要线程

        首先,“并发编程”称为当下的刚需。

                1)单核cpu的提升遇到瓶颈,想要提升算力就需要使用多核cpu并且合理利用多核cpu,而并发编程可以很好的利用多核cpu。

                2)有一些应用场景下需要等待IO(例如:使用scanner的next()函数 就需要等待用户输入数据),为了让等待IO的情况下cpu可以做其他的工作,就需要用到并发编程。

        其次,虽然多进程也能实现并发编程,但是多线程更加轻量化,理由如下:

                1)进程的创建与销毁均要慢于线程

                2)运行一个程序,多进程占用的资源高于多线程

                3)线程的调度快于进程

        最后, 线程虽然⽐进程轻量, 但是⼈们还不满⾜, 于是⼜有了 "线程池"(ThreadPool) 和 "协程"

        2.2 线程与进程的区别

        1)进程包含线程,一个进程包含一个或多个线程。

        2)进程是系统分配资源的基本单位,线程是系统调度的基本单位。

        3)进程与进程之间不共享资源,但是一个进程的多个线程之间共享这个进程的资源

        4)一个进程的报错崩溃往往不会影响其他的进程,但是一个进程的多个线程之间报错崩溃可能会影响其他的线程,即引发“线程安全”问题。

        5)线程的创建、销毁、调度效率均快于进程,每个线程有自己执行的任务。

        2.3 Java线程于操作系统线程的关系

        线程是操作系统中的概念,操作系统的内核实现了线程这样的机制,并对用户提供了一些API供用户使用。

        Java标准库中的 Thread类可以看作对这些API的封装和抽象

3.进程与线程的关系图

        下图中使用波浪线来表示线程,使用方块表示进程,帮助你进一步理解线程于进程

        

               

              

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值