小
小宅
V1
2023/03/12阅读:8主题:默认主题
多线程
多线程

进程

线程
-
单线程 && 多线程
多线程的实现方案

方案1:


为啥要重写run ?
-
因为run 是用来封装被线程执行的代码
run 和 start 的区别?
-
run 就跟创建对象执行代码一样, 用对象调用方法, 没有开启线程 -
start 开启线程, 然后由jvm 调用此线程里面的run 方法
方案2:


方案3


注意: get方法, 需要在调用线程的方法之后调用
三种方式比较

线程类常见方法
获取线程名 和 设置线程名
获得当前线程对象


线程休眠


线程调度



线程优先级最大是10
守护线程


线程安全
多个线程操作一个数据会导致线程问题



同步方式


--- 同步方法

Lock 锁



死锁
锁产生了嵌套会导致死锁


生产者 & 消费者模式
是一种多线程关系
等待 && 唤醒



阻塞队列 实现等待唤醒机制



基本用法

结合唤醒机制
多线程高级
线程状态



线程池

Executors 默认线程池



参数



任务拒绝策略
volatile


如何解决 方法1
方法2

原子性
要么同时成功,要么同时失败


原子类:AtomicInteger

原理



悲观锁 & 乐观锁

并发工具类

hashTable 数据安全,效率低



ConcurrentHashMap原理解析


CountDownLatch
等待某个线程结束之后在执行

--- demo


semaphore
可以控制访问特定资源的线程数量


作者介绍
小
小宅
V1