![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java并发
qq_42225507
这个作者很懒,什么都没留下…
展开
-
详解java并发原子类AtomicInteger(基于jdk1.8源码分析)
ava并发包里面的类一直是学习和面试的重点,这篇文章主要是对java并发包的其中一个类AtomicInteger的讲解。从为什么要出现AtomicInteger再到其底层原理来一个分析。 一、从a++说起为什么使用AtomicInteger 我们知道java并发机制中主要有三个特性需要我们去考虑,原子性、可见性和有序性。synchronized关键字可以保证可见性和有序性却无法保证原子性。而这个AtomicInteger的作用就是为了保证原子性。我们先看一个例子。 在上面的这个例子中,我们定义了一原创 2020-07-14 21:17:18 · 124 阅读 · 0 评论 -
java volatile关键字作用及使用场景
1. volatile关键字的作用:保证了变量的可见性(visibility)。被volatile关键字修饰的变量,如果值发生了变更,其他线程立马可见,避免出现脏读的现象。如以下代码片段,isShutDown被置为true后,doWork方法仍有执行。如用volatile修饰isShutDown变量,可避免此问题。 public class VolatileTest3 { static class Work { boolean isShutDown = false; ...原创 2020-07-14 21:10:03 · 357 阅读 · 1 评论 -
Java并发编程Semaphore的工作原理、源码分析及使用示例
简介: 在多线程程序设计中有三个同步工具需要我们掌握,分别是Semaphore(信号量),countDownLatch(倒计数门闸锁),CyclicBarrier(可重用栅栏) 欢迎探讨,如有错误敬请指正 1. 信号量Semaphore的介绍 我们以一个停车场运作为例来说明信号量的作用。假设停车场只有三个车位,一开始三个车位都是空的。这时如果同时来了三辆车,看门人允许其中它们进入进入,然后...转载 2019-02-20 11:32:59 · 64 阅读 · 0 评论 -
Timer的缺陷 用ScheduledExecutorService替代
1、Timer管理延时任务的缺陷 a、以前在项目中也经常使用定时器,比如每隔一段时间清理项目中的一些垃圾文件,每个一段时间进行数据清洗;然而Timer是存在一些缺陷的,因为Timer在执行定时任务时只会创建一个线程,所以如果存在多个任务,且任务时间过长,超过了两个任务的间隔时间,会发生一些缺陷:下面看例子: Timer的源码: public class Timer { /** ...转载 2019-02-20 11:54:12 · 92 阅读 · 0 评论 -
CountDownLatch、CyclicBarrier和Semaphore
在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程, 比如CountDownLatch,CyclicBarrier和Semaphore, 个人称他们为闭锁、循环锁和信号锁,为了方便记忆。 今天我们就来学习一下这三个辅助类的用法。 以下是本文目录大纲: 一.CountDownLatch用法 二.CyclicBarrier用法 三.Semaphore用...转载 2019-02-20 15:54:29 · 103 阅读 · 0 评论 -
HashMap、TreeMap和ArrayList的替代
原创 2019-03-12 22:13:31 · 450 阅读 · 0 评论