并发编程
文章平均质量分 90
林夕风暴
常在江边站,必有望海心
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
synchronized 加锁 this 和 class 的区别
synchronized 加锁 this 和 class 的区别前言synchronized 是 Java 语言中处理并发问题的一种常用手段,它也被我们亲切的称之为“Java 内置锁”,由此可见其地位之高。然而 synchronized 却有着多种用法,当它修饰不同对象时,其意义也是不同的,下面我们一起来看synchronized 用法synchronized 可以用来修饰普通方法、静态方法和代码块。① 修饰普通方法/** * synchronized 修饰普通方法 */public sy转载 2021-08-18 15:41:35 · 1365 阅读 · 1 评论 -
synchronized 中的 4 个优化
synchronized 中的 4 个优化前言synchronized 在 JDK 1.5 时性能是比较低的,然而在后续的版本中经过各种优化迭代,它的性能也得到了前所未有的提升,上一篇中我们谈到了锁膨胀对 synchronized 性能的提升,然而它也只是“众多” synchronized 性能优化方案中的一种,那么我们本文就来盘点一下 synchronized 的核心优化方案。synchronized 核心优化方案主要包含以下 4 个:1.锁膨胀2.锁消除3.锁粗化4.自适应自旋锁1.锁膨转载 2021-08-18 15:10:31 · 422 阅读 · 0 评论 -
synchronized 优化手段之锁膨胀(锁升级)机制
synchronized 优化手段之锁膨胀机制前言synchronized 在 JDK 1.5 之前性能是比较低的,在那时我们通常会选择使用 Lock 来替代 synchronized。然而这个情况在 JDK 1.6 时就发生了改变,JDK 1.6 中对 synchronized 进行了各种优化,性能也得到了大幅的提升,这也是目前版本中还能经常见到 synchronized 身影的重要原因之一。当然除了性能之外,synchronized 的使用也非常便利,这也是它流行的重要原因。在众多优化方案中,锁膨转载 2021-08-18 11:26:42 · 437 阅读 · 0 评论 -
线程池七大参数和拒绝策略
由Executors源码中常用的三个获得线程池的方法可见他们都是通过ThreadPoolExecutor线程操作类来实现的再看ThreadPoolExecutor的源码实现该线程操作类的实现是有七大参数的这七大参数的含义:用一个银行处理业务的场景来模拟解释七大参数的含义关于KeepAliveTime就是当来办理银行业务的人越来越少,即请求线程越来越少,加班窗口(扩容的线程)慢慢的不再...原创 2020-03-04 20:21:18 · 482 阅读 · 0 评论 -
线程池的使用(实际中的应用)
线程池的使用(实际中的应用)我们前边说过3中比较重要的线程池的获得方式但是在实际的工作中获得线程池并不使用这三种方式,阿里巴巴开发手册中有关线程资源的获取和线程池的使用规定如下:意思即这几种自带的创建线程池的方法中:FixedThreadPool和SingleThreadPool中定义的阻塞队列为LinkedBlockingQueue类型,它的默认阻塞边界值为Integer.MAX_...原创 2020-03-04 20:20:16 · 5022 阅读 · 0 评论 -
获得多线程的方式之线程池
获得多线程的方式之线程池谈谈你对线程池的理解什么是线程池?优势?线程池的主要作用控制运行的线程的数量,简单来说,存放多个线程的池子,用到的时候从池中取线程去执行队列任务,执行完任务线程的释放主要特点:线程复用(避免重复方法创建和销毁线程,降低资源消耗,提高了响应速度)控制并发线程数(可以设置线程的数量)管理线程(对多个线程进行统一的分配,调优和监控)优势:降低资源消耗,提高了响应...原创 2020-02-29 17:23:11 · 249 阅读 · 0 评论 -
Callable获得多线程
获得多线程的方式之通过Callable接口先看一下Callable的接口源码与Runnable接口的区别1)Runnable接口没有返回值,该接口有返回值(带返回值的线程工作内容)2)Runnable接口方法不会抛异常,该接口方法会抛异常3)Runnable接口方法是run()方法,该接口的接口方法是call()方法怎么使用Callable接口Thread有Thread(Ru...原创 2020-02-29 17:22:01 · 400 阅读 · 0 评论 -
线程通讯之生产者消费者(生产一个,消费一个)传统版和阻塞队列版
线程通讯之生产者消费者线程 操作(方法) 资源类判断 执行 通知防止虚假唤醒(await()的判断逻辑必须放到一个循环while里面,不能放在if里面)实例:一个初始值为0的变量,两个线程对其进行交替操作,一个加1一个减1(生产一个,消费一个),来5轮实现方式传统版 1): Synchronized锁、aw...原创 2020-02-29 17:20:09 · 278 阅读 · 0 评论 -
阻塞队列BlockingQueue
阻塞队列BlockingQueue队列:一种数据结构,先进先出(排队取餐)阻塞队列:(交通拥堵)1)阻塞队列有没有好的一面(一种情况:海底捞火锅,消费者越多,越阻塞证明生意越好,欢迎阻塞)2)不得不阻塞,你如何管理?什么是阻塞队列(BlockingQueue):当阻塞队列中元素为空的时候,从队列中获取元素的操作将被阻塞当阻塞队列中元素为满的时候,往队列中插入元素的操作将被阻塞...原创 2020-02-17 11:23:50 · 243 阅读 · 0 评论 -
Java并发编程之Semaphore(信号量)
SemaphoreSemaphore是Java并发编程中常用到的,也叫信号量一:用于多个共享资源的互斥访问,二:控制并发线程数(这是相较于Synchronize的优势,当控制的并发线程数为1时,就等同于Synchronize,Lock锁)模拟示例模拟分车位,比如6个车抢占3个共享车位,同时最多只能3个车拥有车位,其他车排队等待,当车位空出来时,新的车进入车位,有增就有减代码及注...原创 2020-02-14 16:14:15 · 232 阅读 · 0 评论
分享