随笔篇-多线程世界的来龙去脉

感谢原创的整理,以下是原文作者连接
原文:https://zhuanlan.zhihu.com/p/122010626

以下为摘抄概要整理
起因:

        有时候学习知识总觉的串联不起来,脑海中总是缺少一些粘合剂似乎,这些粘合剂,却很关键,它可以把学过的知识点,
        修复粘合成一个完整强壮的知识树,存于脑海中。
        粘合剂的名字叫做:概括!

前缀:

  1. 进程
    操作系统分配资源的基本单位,有独立的内存空间,通信效率低,切换开销大
  2. 线程
    CPU调度的基本单位,共享父进程的资源,通信效率高,切换开销小

线程

  • 使用线程目标:
    使用线程是为了提高程序性能而线程解决的是IO密集型问题CPU利用率问题。

IO密集:指的是有大量的操作需要读/写,cpu的计算能力没有利用,CPU处于等待状态,这种情况就是BIO模式。(所以cpu等待的时候我们就创建新的线程让cpu干其他活)
计算密集:单CPU多线程不能解决计算密集问题,效果甚至比单线程更差。

多线程带来的问题

1 线程的切换:
2 共享资源的控制。
解决办法:
使用锁来解决,线程的同步工具 synchroized AQS系列的锁

线程的挂起与唤醒

同步工具涉及线程的挂起与唤醒,线程挂起与唤醒涉及到cpu切换上下文,毕竟每个挂起的线程信息需要存储,存储和切换这是cpu做的事情。

例如:某个他线程调用了notify() ,最终反馈到cpu中是,cpu去唤醒在挂起的列表中,需要唤醒的线程。

线程的管理

  • 线程切换的开销
  • 计算机的内存毕竟是有限

管理目标:
1.降低资源消耗

2.提高响应速度

3.线程可管理性

java中,提供了很多线程池实现类。

  1. newCachedThreadPool()

  2. newFixedThreadPool()

  3. newScheduledThreadPool()

  4. newSingleThreadExecutor()

感谢原创的整理,以下是原文作者解读
原文:https://zhuanlan.zhihu.com/p/122010626

如果看官觉得有点用,点赞一下 鼓励一下我吧!

欢迎添加公众号与您分享更多记录
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值