![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
gracebxp
这个作者很懒,什么都没留下…
展开
-
并发进阶
1. synchronized关键字 1.1 对synchronized的理解 synchronized解决的是多线程访问资源的同步性,synchronized可以保证它所修饰的方法或代码块在任意时刻只能有一个线程运行。 synchronized 是一个重量级操作,需要调用操作系统相关接口,性能是低效的,有可能给线程加锁消耗的时间比有用操作消耗的时间更多。 Synchronized 是通过对象内部...原创 2019-05-31 17:28:32 · 202 阅读 · 0 评论 -
并发基础
1.什么是线程和进程 1.1 什么是进程 进程就是程序的一次执行过程,是运行程序的基本单位。所以,进程是动态的,程序的运行就是进程从创建到灭亡的过程。 比如,main函数运行时,就是虚拟机启动了一个进程,main函数所在的线程就是这个进程的一个主线程. 1.2 什么是线程 线程与进程类似,但线程是比进程更小的单位,一个进程中可以有多个线程,与进程不同的是同类的多个线程可以共享堆和方法区的资源,但因...原创 2019-05-28 23:23:51 · 224 阅读 · 0 评论 -
并发容器总结
一.JDK提供的并发容器总结 jdk提供的大部分容器都在java.util.concurrent中。 ConcurrentHashMap: 线程安全的HashMap CopyOnWriteArrayList: 线程安全的List,适用于读多写少的场景,好于Vector. ConcurrentLinkedQueue: 高效的并发队列,使用链表实现。可以看做一个线程安全的LinkedList,这是一...原创 2019-06-01 19:53:51 · 107 阅读 · 0 评论 -
乐观锁和悲观锁
一.什么是乐观锁和悲观锁 1.1 悲观锁 悲观锁是就是悲观思想,即认为写多,遇到并发写的可能性高,每次去拿数据的时候都认为别人 会修改,所以每次在读写数据的时候都会上锁,这样别人想读写这个数据就会 block 直到拿到锁。 java中的悲观锁就是Synchronized,AQS框架下的锁则是先尝试cas乐观锁去获取锁,获取不到, 才会转换为悲观锁,如 RetreenLock. 传统的关系型数据库里...原创 2019-06-01 20:18:56 · 621 阅读 · 0 评论 -
AQS介绍
一.AQS简单介绍 AbstractQueuedSynchronizer 类如其名,抽象的队列式的同步器,AQS 定义了一套多线程访问 共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock/Semaphore/CountDownLatch。 二.AQS原理 AQS核心思想是,如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并且将共享资源设置为锁定...原创 2019-06-01 20:47:23 · 145 阅读 · 0 评论