线程一卡通

本文详细探讨了线程与并发编程的概念,包括线程的创建、状态、多线程安全问题以及线程间通信。进一步,文章深入讲解了并发编程中的CPU内存模型问题、线程安全问题如原子性、有序性和可见性,以及volatile关键字的作用。此外,重点介绍了ThreadLocal的工作原理和内存泄漏问题。最后,详述了线程池的原理、执行流程、阻塞队列、拒绝策略和关闭方法,阐述了线程池如何优化线程管理。
摘要由CSDN通过智能技术生成

一、线程

1.进程
  • 操作系统分配资源的单元
  • 运行中的程序
2.线程
  • CPU调度的最小单位
  • 一个具体的执行单元(任务)
3.多线程
  • 就是一个进程内,允许有多个线程,同时执行
  • 优点:提高了CPU的利用率,增强了程序的功能
  • 缺点:对硬件要求高(CPU,内存,硬盘)
  • 线程安全:多线程访问同一个共享资源
4.线程创建方式
  • 继承Thread
  • 实现Runnable接口
  • 实现Callable接口,call()可以抛出异常,有返回值
  • 线程池
5.线程状态
  • 新建:当一个Thread类或者子类的对象被声明或创建时,新生的线程对象处于新建状态
  • 就绪:处于新建状态的线程被Start后,将进入线程队列等待CPU时间片,此时它已具备了运行的条件,只是没分配到CPU资源
  • 运行:当就绪的线程被调度并获得CPU资源时,便进入运行状态,**run()**方法定义了线程的操作和功能
  • 阻塞:在某种特殊情况下,被人为挂起或执行输入输出操作时,让出CPU并临时中止自己的执行,进入阻塞状态
  • 死亡:线程完成了它的全部工作或线程被提前强制性地中止或出现异常导致结束
6.多线程安全问题
  • eg:
    • 卖票,取款,秒杀,抢购
  • 解决:加锁,排队
7.守护线程
8.线程间通信

二、并发编程

1.并发和并行
  • 并发:同一时间如何应对事情(一个CPU采用时间片执行多个任务)
  • 并行:同时做多件事情(多个CPU执行多个任务)
  • 多线程访问同一个共享资源,线程安全问题,因为现在CPU是多核的,可以同时执行多个线程
2.安全问题
  • 性能
  • 死锁
  • 原子性,有序性,可见性
3.CPU内存模型的问题
  • 1.CPU---------内存----------IO(硬盘)
    • 三者之间读写速度有差别
    • CPU提供了缓存
    • 任务细化到线程,切换执行
  • 2.CPU对我们指令代码的顺序进行优化(重排)
  • 3.JMM内存模型
    • 当多个处理器在运算任务
    • 访问同一个内存区时
    • 将可能会得到不同的缓存数据,
4.线程安全问题
  • 可见性,有序性,原子性
  • 可见性:
    • 不同线程中,有一个缓存,缓存要操作的变量,
    • 为了提高效率,会等所有操作完成后,在将数据写入内存中
    • 当数据还未写入主内存时,其他线程对其不可见
    • a++问题
  • 有序性:
    • 指程序按照代码的顺序执行,
    • CPU会对我们
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值