Java并发编程基础
文章平均质量分 64
jofjhh
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java并发编程基础
什么是线程: 操作系统运算调度的最小单元,轻量级的进程,一个线程包含独立的计数器、栈、局部变量等属性,并且线程间可以共享堆内存。所谓的多线程程序,也就是处理器通过上下文切换,给不同线程分配时间片,让人感觉线程是同时执行的。为什么要使用多线程:充分利用多核处理器 一个进程下会有多个线程,一个线程的运行会占用一个处理器核心。现在多核cpu已经司空见惯,如果我们编程还是单线程...原创 2018-04-23 11:06:45 · 213 阅读 · 0 评论 -
Java内存模型(并发)
一.Java内存模型的基础并发编程模型的两个关键问题:线程之间如何通信:线程之间以何种机制交换信息;线程之间如何同步:控制不同线程间操作发生相对顺序的机制;线程之间的通信机制:共享内存:线程之间共享程序的公共状态,通过写读内存中的公共状态进行隐式通信(显式同步);消息传递:线程之间没有公共状态,线程之间通过发送消息显式进行通信(隐式同步);Java内存模型的抽象结构: JMM(java...原创 2018-04-23 11:39:08 · 260 阅读 · 0 评论 -
java中的线程池
线程池的作用:降低资源消耗速度;重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度;任务不需要等待线程创建就能立即执行;提高线程的可管理性;线程池实现原理:线程池判断核心线程池里的线程是否都在执行任务。如果不是,则创建一个新的工作线程来执行任务。如果核心线程池里的线程都在执行任务,则进入下个流程;线程池判断工作队列是否满。如果工作队列没有满,则将新提交的任务存储在这个工作队列里。如果满...原创 2018-04-30 11:17:42 · 145 阅读 · 0 评论 -
Java并发机制的底层实现原理
并发编程的挑战上下文切换;死锁问题:避免一个线程同时获取多个锁;避免一个线程在锁内同时占用多个资源,尽量保证每个锁只占用一个资源;尝试使用定时锁;资源限制:并发编程,执行速度受限于硬件资源和软件资源;并发编程的底层原理volatile的应用(轻量级的synchronized)定义:保证共享变量的“可见性”,当一个线程修改一个变量时,另外一个线程能读到这个修改的值;volatile的两条实现原则:L...原创 2018-04-26 10:12:37 · 182 阅读 · 0 评论 -
AbstractQueuedSynchronized源码解析
概要 队列同步器 AbstractQueuedSynchronizer(以下简称 AQS),是用来构建锁或者其他同步组件的基础框架。它使用一个 int 成员变量来表示同步状态,通过 CAS 操作对同步状态进行修改,确保状态的改变是安全的。通过内置的 FIFO (First In First Out)队列来完成资源获取线程的排队工作。AQS和Synchronized的比较 AQS ...转载 2018-04-26 20:10:15 · 1143 阅读 · 0 评论 -
ReentrantReadWriteLock源码分析
概述 ReentrantReadWriteLock是Lock的另一种实现方式,我们已经知道了ReentrantLock是一个排他锁,同一时间只允许一个线程访问,而ReentrantReadWriteLock允许多个读线程同时访问,但不允许写线程和读线程、写线程和写线程同时访问。相对于排他锁,提高了并发性。在实际应用中,大部分情况下对共享数据(如缓存)的访问都是读操作远多于写操作,这时Reentr...转载 2018-04-27 15:06:47 · 168 阅读 · 0 评论 -
ConcurrentHashMap源码分析
原文出自:https://www.cnblogs.com/chengxiao/p/6842045.htmlConcurrentHashMap实现原理及源码分析 ConcurrentHashMap是Java并发包中提供的一个线程安全且高效的HashMap实现(若对HashMap的实现原理还不甚了解,可参考我的另一篇文章HashMap实现原理及源码分析),ConcurrentHashMap在并发编程...转载 2018-04-27 16:36:22 · 159 阅读 · 0 评论
分享