面试必问的CAS,你懂了吗?

概述CAS(Compare-and-Swap),即比较并替换,是一种实现并发算法时常用到的技术,Java并发包中的很多类都使用了CAS技术。CAS也是现在面试经常问的问题,本文将深入的介绍CAS的原理。案例介绍CAS之前,我们先来看一个例子。上面这个例子在volatile关键字详解文中用过,我们知...

2018-03-14 22:29:19

阅读数:8893

评论数:2

Java并发:线程池详解(ThreadPoolExecutor)

前言现在在实现异步时,基本都是使用线程池来实现,线程池在工作应用的还是比较频繁的,本文将就线程池的使用、相关原理和主要方法源码进行深入讲解学习。线程池的基本使用package com.joonwhee.concurrent; import java.util.ArrayList; import ...

2018-01-21 23:40:01

阅读数:4093

评论数:0

Java并发:ThreadLocal详解

前言ThreadLocal的作用是提供线程内的局部变量,这种变量在多线程环境下访问时能够保证各个线程里变量的独立性。ThreadLocal无论在项目开发还是面试中都会经常碰到,本文就ThreadLocal的使用、主要方法源码详解、内存泄漏问题展开讨论。1.基本使用package com.joonw...

2017-12-02 22:20:19

阅读数:4548

评论数:3

单例模式详解

概述单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,使用单例模式的类只有一个对象实例。单例应用场景Windows系统的任务管理器。Windows系统的回收站。操作系统的文件系统,一个操作系统只能有一个文件系统。数据库连接池的设计与实现。...

2018-03-10 19:31:17

阅读数:216

评论数:0

Java并发:volatile关键字详解

概述volatile关键字可以说是Java虚拟机提供的最轻量级的同步机制,但是它并不容易完全被正确、完整地理解,以至于许多程序员都习惯不去使用它,遇到需要处理多线程数据竞争问题的时候一律使用synchronized来进行同步。了解volatile变量的语义对了解多线程操作的其他特性很有意义,在本文...

2018-03-04 17:18:49

阅读数:878

评论数:0

Java并发:Condition详解

概述任意一个Java对象,都拥有一组监视器方法(定义在java.lang.Object上),主要包括wait()、wait(long timeout)、notify()以及notifyAll()方法,这些方法与synchronized同步关键字配合,可以实现等待/通知模式。Condition接口也...

2018-02-13 16:21:57

阅读数:237

评论数:0

Java并发:AbstractQueuedSynchronizer详解(独占模式)

概述AQS(AbstractQueuedSynchronizer)是一个用于构建锁和同步器的框架,许多同步器都可以通过AQS很容易并且高效地构造出来。不仅ReentrantLock和Semaphore是基于AQS构建的,还包括CountDownLatch、ReentrantReadWriteLoc...

2018-02-10 19:34:54

阅读数:305

评论数:0

Java并发:性能与可伸缩性

概述编写正确的程序很难,而编写正确的并发程序则难上加难。与串行程序相比,在并发程序中存在更多容易出错的地方。那么,为什么还要编写并发程序?线程是Java语言中不可或缺的重要功能,它们能使复杂的异步代码变得更简单,从而极大地简化了复杂系统的开发。此外,要想充分发挥多处理器系统的强大计算能力,最简单的...

2018-01-28 20:36:15

阅读数:885

评论数:0

Java并发:同步工具类详解(CountDownLatch、CyclicBarrier、Semaphore)

概述同步工具类可以是任何一个对象,只要它根据其自身的状态来协调线程的控制流。阻塞队列可以作为同步工具类,其他类型的同步工具类还包括信号量(Semaphore)、栅栏(Barrier)以及闭锁(Latch)。本文就目前常用的3种同步工具类进行简单介绍。闭锁闭锁是一种同步工具类,可以延迟线程的进度直到...

2018-01-27 19:02:38

阅读数:287

评论数:0

Java并发:InheritableThreadLocal详解

概述最新看项目代码时, 发现有地方用到了InheritableThreadLocal,之前只用过ThreadLocal,于是就查了点资料,看了下源码,稍微学习一下。InheritableThreadLocal是ThreadLocal的子类,可以先了解下ThreadLocal:Java并发:Thre...

2018-01-20 22:48:01

阅读数:597

评论数:0

Java并发:线程安全与锁优化

概述人们很难想象现实中的对象在一项工作进行期间,会被不停地中断和切换,对象的属性(数据)可能会在中断期间被修改和变“脏”,而这些事情在计算机世界中则是很正常的事情。有时候,良好的设计原则不得不向现实做出一些让步,我们必须让程序在计算机中正确无误地运行,然后再考虑如何将代码组织得更好,让程序运行更快...

2018-01-01 18:25:15

阅读数:289

评论数:1

Java并发:Java内存模型(JMM)与线程

概述多任务处理在现代计算机操作系统中几乎已是一项必备的功能了。在许多情况下,让计算机同时去做几件事情,不仅是因为计算机的运算能力强大了,还有一个很重要的原因是计算机的运算速度与它的存储和通信子系统速度的差距太大,大量的时间都花费在磁盘I/O、网络通信或者数据库访问上。如果不希望处理器在大部分时间里...

2017-12-31 17:15:11

阅读数:365

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭