![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
Unyielding ● L
这个作者很懒,什么都没留下…
展开
-
多线程之ThreadLocal
前言 前几天在京东的同学给我打了个电话,聊了下家常,技术宅的我多嘴问了最近有没有学啥? 他说最近有点忙,但抽空也看了几篇博客,他说我考考你吧,我说可以啊,他问我: ThreadLocal 使用不当会导致 OOM 吗?我不假思索的回答:会。他继续追问道:为什么? 我说:因为 ThreadLocal 和操作它的线程绑定在一起,如果操作他的线程不被销毁,与之关联的 ThreadLocal 不会被 G...原创 2019-11-17 16:06:42 · 236 阅读 · 2 评论 -
你真的了解Wait 和Notify吗?
前言 大家对生产者和消费者模式很熟悉吧,这个模式很好理解,也在工程实践中经常被使用到。学习Java的同学有很大一部分使用Java语言实现过生产者和消费者模式,我就是其中之一。大概思路:有个盛装数据的容器(list)即缓冲区,一个往容器里放数据即生产者,一个从容器中取数据即消费者。但当容器满的时候,生产者就不能往里放东西了,此时需要等待缓冲区不满,即有消费者从容器中取出数据了,这就需要一个等待...原创 2019-11-05 22:47:07 · 187 阅读 · 0 评论 -
Java 8 之Stream 生成姿势
Stream 的定义支持顺序和并行聚合操作的元素序列可以由数组、集合以及文件转换而成Stream 消费完之后便没有了,就想流水一样生成流的“源”是一个不会在操作流的过程中改变生成流的"姿势"数组生成流Integer[] arr = {1, 2, 3, 4, 6};//这里可以开成int[] 试试看看结果。。。① Stream.of(arr)//生成流Strea...原创 2019-10-27 10:53:11 · 288 阅读 · 0 评论 -
Java 多线程之Semaphore (限流Java 版)
概念计数信号量。从概念上讲,信号量维护一组许可证。举一个例子某银行分店只有三个窗口,所以同一时间最多只有三个人办理业务,其它人只能等待。可以把办理业务的人比作成线程,三个窗口就相当于三个许可证。此时来了4个人,先到的三个领到人许可证然后办理业务,第四个人呢只有等待,等待其中一个先办好业务释放许可证之后,然后再办理业务。简单的用法调用aquire方法是阻塞的直到有一个许可可用然后返回。每次...原创 2019-10-27 10:51:55 · 472 阅读 · 0 评论 -
AQS实现探究 ——Java 锁的基架 AQS(二)
前言上篇介绍了AQS的概念,AQS 所支持的两种模式:独占模式和共享模式,如何去使用AQS 实现独占锁。这篇就介绍下AQS 是怎么是将线程锁住的?以及多个线程争夺时AQS 做了哪些事情?知识点简介volatilevolatile 是Java 中的关键字,主要有两个特性:可见性和防止重排序。在AQS主要用到第一个特性就是可见性;什么是可见性呢?学过操作系统的都知道,主内存是存放程序运行时数据...原创 2019-10-27 10:50:04 · 154 阅读 · 0 评论 -
Java 锁的基架 AQS(一)
简述提供一个框架来实现基于先入先出等待队列的阻塞锁和相关同步器(信号量,事件等)。该类被设计成多种类型同步器的有用基础,这些同步器使用一个简单原子整数值表示状态。这个简单原子整数是核心,它是用volatile关键字修饰,改变其値是通过CAS方式去修改的。子类必须定义改变这个状态的受保护的方法,这些方法的定义意味着被获取或者被释放对象的意义是什么。因此这个类的其他方法实现了所有的排队和阻塞机制。...原创 2019-10-27 10:48:26 · 100 阅读 · 0 评论