进程、线程、多线程举例说明

进程、线程、多线程

  • 进程:程序的执行过程,例如QQ.exeMusic.exe等程序的集合。

    • 一个进程可以包含多个线程,但至少包含一个线程
    • 进程是资源分配的基本单位
    • java默认有两个线程,分别是main线程(即主线程)和GC(垃圾回收)
  • 线程:线程是进程中执行运算的最小单元,以QQ为例,QQ.exe是一个进程,在聊天框中,我们可以一边接收文件(线程1),一边打字聊天(线程2)。再以Music为例,Music.exe是一个进程,在听音乐的时候(线程A),我们可以下载音乐(线程B)

    • 一个线程只能属于一个进程

    • 线程是处理机调度的基本单位

    • 同一个进程中的所有线程共享该进程分配到的所有资源

  • 多线程:学习多线程之前,需要先了解并行并发的区别

    并行:同一时间同时执行,强调同一时刻—>你打游戏和你女朋友打你同时进行

    并发:同一时间段多个任务轮流执行,强调一段时间—>你打完游戏后去哄你女朋友,然后可能还会接着打游戏或者去做别的事

    • 当程序中有两个子系统需要并发执行,这个时候就需要利用多线程—>不仅需要打游戏,还需要哄女朋友
    • 切记,上下文的切换开销也很重要,CPU切换线程时会产生开销,所以不宜创建太多的线程,否则CPU花费在上下文切换的时间将多于执行程序的时间。(进程/线程上下文切换会用掉你多少CPU)
  • 线程池:管理线程的池子,可以控制线程的数量,当任务到达了,先判断线程池中是否还有空闲的线程,如果有,直接取该线程;如果没有,则需要等待,直到其余某个任务结束,释放线程给他。—>卫生间有十个蹲位,你去上厕所先看是否有空闲蹲位,如果有,占用一个蹲位;如果没有,那就得等待,直到有人结束了,把蹲位空闲出来。

    • 线程池帮我们管理线程,避免增加创建线程和销毁线程的资源损耗。因为线程也是一个对象,创建一个对象需要经过类的加载过程;销毁一个对象,需要走GC垃圾回收流程,都需要资源开销。
    • 线程池提高了响应速度,直接从线程池中拿线程要比重新创建一条线程快得多。
    • 重复利用,线程用完再放回池子里,可以重复利用,节省资源。
  • 线程的创建:三种方式

    • 继承Thread类
    • 实现Runnable接口
    • 实现Callable接口
  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值