小宅

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