![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
文章平均质量分 86
wuYin9
为自己每次新掌握的技术做记录,顺便分享一下
展开
-
Java 并发协同工具类
并发协同 多个线程并发,协作来完成一件事情的过程中,因事情处理的需要,需控制某些线程来阻塞,等待另一些线程来完成某部分事情,再继续执行的过程 应用场景 会话 实现方式 多线程协同都基于条件等待-通知模式 基于传统的 synchronized 及 Oject的 wait、notify/notifyAll 监听器的方式 基于 Lock 及 Condition 的 await、singal 方式的 等待-通知 用Java并发包提供的API 并发协同的常用类 CountDownLatch 倒计数锁存原创 2021-03-28 20:46:12 · 132 阅读 · 0 评论 -
Lock
锁的分类 自旋锁 当一个线程在获取锁的时候,如果锁已经被其他线程获取,那么该线程将循环等待,然后不对判断锁是否能够被成功获取,直到获取到锁才 会退出循环 乐观锁 每次去拿取数据时,假定对象没有冲突,在更新数据时如果发现数据和之前获取的数据不一致,则读取最新的数据,然后再修改 悲观锁 每次去拿取数据时,假定对象会发生冲突,同步所有对数据相关的操作,从读取数据前上锁,然后修改 独占锁 给资源加上写锁,只有该线程可以修改资源,其他线程不能再加锁(但写) 共享锁 给资源上锁后只原创 2020-09-25 18:38:44 · 102 阅读 · 0 评论 -
线程安全 Synchronize
Synchronize 使用 Synchronize 使用位置 修饰方法:使用的锁是 this monitor 锁 修饰代码块: 指定对象的 monitor 锁 修饰静态方法: 当前类的class 锁 | 在同一个JVM里是没有问题的 特性 可重入 独占 悲观锁 阻塞 特殊优化 锁消除 对不会存在线程安全的锁进行消除 锁粗化 如果JVM检测到有一系列的操作都对同一个对象加锁,将会把锁粗化到整个操作外部 偏向锁 如果在运行过程中,同步锁只有一个线程访问,不存在多线程争用的情况,原创 2020-09-10 19:28:32 · 127 阅读 · 0 评论 -
线程池
引入 线程不仅是Java中的一个对象,每个线程都有自己的工作内存 线程的创建、销毁需要时间,过多的操作会消耗性能 线程过多也会占用内存 操作系统需要频繁切换上下文,会影响性能 如果线程 创建时间 + 销毁时间 > 执行任务时间 则不合算。 线程池组成 线程池管理器 用于创建并管理线程池,包括创建线程池,销毁线程池,添加新任务 工作线程 线程池中线程,可以循环的执行任务,在没有任务是处理等待状态 任务接口 每个任务必须实现的接口,以供工作线程调度任务的执行,它主要规定了任务的入口原创 2020-09-01 16:50:12 · 92 阅读 · 0 评论 -
多线程简介
多线程简介线程概念线程与进程多线程使用场景线程组(ThreadGroup)启动线程执行逻辑终止线程线程守护线程状态interrupt线程不会被中断在Waiting、Timed Waiting状态使用park()、parkNanos() 方法执行后目标是I/Oh或者NIO终止线程线程间的通信方式数据交互线程协作JDK中提供的协调API伪唤醒 线程概念 线程与进程 进程:指在系统中正在运行的一个应用程序;程序一旦运行就是进程;进程——资源分配的最小单位 线程:cpu的最小执行单位是线程 线程串行:归根结底就是单原创 2020-08-01 20:16:01 · 139 阅读 · 0 评论