
并发编程
Ben同学
加油,坚持学习!
展开
-
Java多线程初步掌握
文章目录线程的基础知识理解线程和进程的区别和联系两种创建线程的方式线程的生命周期线程死亡的几种情况控制线程的常用方法线程同步的概念和必要性使用synchronized控制线程同步使用Lock对象控制线程同步使用Object提供的方法实现线程通信使用条件变量实现线程通信使用管道流实现线程通信实现Callable接口创建线程线程池的功能和用法ThreadLocal类的功能和用法使用线程安全的集合类线...原创 2019-08-14 00:02:19 · 925 阅读 · 0 评论 -
Java中的并发工具类
文章目录等待多线程完成的CountDownLatch同步屏障CyclicBarrierCyclicBarrier的应用场景CyclicBarrier和CountDownLatch的区别控制并发线程数的Semaphore应用场景其他方法线程间交换数据的ExchangerCountDownLatch、CyclicBarrier和Semaphore工具类提供了一种并发流程控制的手段,Exchanger...原创 2019-10-08 11:30:23 · 237 阅读 · 0 评论 -
Java中的12个原子操作类
文章目录原子更新基本类型类原子更新数组原子更新引用类型原子更新字段类当程序更新一个变量时,如果多线程同时更新这个变量,可能得到期望之外的值,比如变量i=1,A线程更新i+1,B线程也更新i+1,经过两个线程操作之后可能i不等于3,而是等于2。因为A和B线程在更新变量i的时候拿到的i都是1,这就是线程不安全的更新操作,通常我们会使用synchronized来解决这个问题,synchronized会...原创 2019-10-08 09:50:09 · 219 阅读 · 0 评论 -
Java并发容器和框架
文章目录ConcurrentHashMap的实现原理与使用为什么要使用ConcurrentHashMapConcurrentHashMap的结构ConcurrentHashMap的初始化初始化segments数组初始化segmentShift和segmentMask初始化每个segment定位SegmentConcurrentHashMap的操作get操作put操作size操作Concurrent...原创 2019-10-07 01:49:24 · 241 阅读 · 0 评论 -
Java中的锁
文章目录Lock接口队列同步器(AQS)队列同步器的接口与示例队列同步器(AQS)的实现分析同步队列独占式同步状态获取与释放共享式同步状态获取与释放独占式超时获取同步状态自定义同步组件——TwinsLock重入锁(ReentrantLock)实现重进入公平与非公平获取锁的区别读写锁读写锁的接口与示例读写锁的实现分析读写状态的设计写锁的获取与释放读锁的获取与释放锁降级LockSupport工具Con...原创 2019-10-06 23:37:57 · 600 阅读 · 0 评论 -
并发编程基础
文章目录线程简介什么是线程为什么要使用多线程线程优先级线程的状态Daemon线程(守护线程)启动和终止线程构造线程启动线程理解中断过期的suspend()、resume()和stop()安全地终止线程线程间通信volatile和synchronized关键字等待/通知机制等待/通知的经典范式管道输入/输出流Thread.join()的使用ThreadLocal的使用线程应用实例等待超时模式一个简单...原创 2019-10-06 01:10:19 · 544 阅读 · 0 评论 -
Java内存模型
文章目录Java内存模型的基础并发编程模型的两个关键问题重排序顺序一致性volatile的内存语义锁的内存语义final域的内存语义happens-before双重检查锁定与延迟初始化Java内存模型综述Java内存模型的基础并发编程模型的两个关键问题重排序顺序一致性volatile的内存语义锁的内存语义final域的内存语义happens-before双重检查锁定与延迟初始化...原创 2019-10-03 00:24:30 · 104 阅读 · 0 评论 -
Java并发机制的底层实现原理
文章目录volatile的应用volatile的定义与实现原理volatile的使用优化synchronized的实现原理Java对象头锁的升级与对比偏向锁偏向锁的撤销关闭偏向锁轻量级锁轻量级锁加锁轻量级锁解锁锁的优缺点对比原子操作的实现原理处理器实现原子操作使用总线锁定保证原子性使用缓存锁保证原子性Java实现原子操作使用循环CAS实现原子操作CAS实现原子操作的三大问题ABA问题循环时间开销大...原创 2019-09-29 01:12:25 · 194 阅读 · 0 评论 -
并发编程常见问题及解决方案
文章目录上下文切换问题多线程不一定快如何测试上下文切换次数和时长如何减少上下文切换无锁并发编程CAS算法使用最少线程协程减少上下文切换的例子死锁问题资源限制什么是资源限制资源限制引发的问题解决资源限制的方案在资源限制情况下进行并发编程并发编程的目的是为了让程序运行得更快。但是,并不是启动更多的线程就能让程序最大限度地并发执行。上下文切换问题即使是单核处理器也支持多线程执行代码,CPU通过给...原创 2019-09-28 00:43:35 · 807 阅读 · 0 评论 -
Executor框架必会考点
文章目录Executor框架简介为什么需要使用Executor框架Executor框架的两级调度模型Executor框架的结构ThreadPoolExecutor详解ScheduledThreadPoolExecutor详解FutureTask详解Executor框架简介为什么需要使用Executor框架在Java中,使用线程来异步执行任务。Java线程的创建与销毁需要一定的开销,如果我们为...原创 2019-09-27 15:40:26 · 128 阅读 · 0 评论 -
Java中的线程池
文章目录线程池的实现原理线程池的使用线程池的创建向线程池提交任务关闭线程池合理地配置线程池线程池的监控Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处:第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行...原创 2019-10-08 14:08:44 · 363 阅读 · 0 评论