Java高并发
达龙猫
不要只做代码搬运工,思想+行动+坚持=成功
展开
-
Java多线程之并发工具类的使用
文章目录ReentrantLockReadWriteLockConditionSemaphoreCountDownLatchCyclicBarrierExchangerReentrantLocksynchonized的增强版,可以完全替换synchonized关键字。在JDK1.5之前synchonized关键字的性能是比较差的,使用ReentrantLock会更好。但是目前最新的JDK版本已...原创 2018-12-12 14:19:18 · 748 阅读 · 0 评论 -
Java多线程之无锁原子类和CAS算法
CAS概述无锁的原理是使用CAS(Compare And Swap)算法,为什么要用CAS呢?在多线程高并发编程的时候,最关键的问题就是保证临界区的对象的安全访问。通常是用加锁来处理,其实加锁本质上是将并发转变为串行来实现的,势必影响吞吐量。而且线程的数量是有限的,依赖于操作系统,而且线程的创建和销毁带来的性能损耗是不可以忽略掉的,虽然现在基本都是用线程池来尽可能的降低不断创建线程带来的性能损...原创 2018-12-11 15:12:18 · 227 阅读 · 0 评论 -
Java多线程之ThreadLocal线程局部变量详解
概述ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量(ThreadLocal)的功能非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制,是每一个线程都可以独...原创 2018-12-10 22:45:51 · 919 阅读 · 0 评论 -
Java多线程之synchronized详解
synchronized作用关键字synchronized可以修饰方法或者以同步块的形式来进行使用,它主要确保多个线程在同一个时刻,只能有一个线程处于方法或者同步块中,它保证了线程对变量访问的可见性和排他性,又称为内置锁机制。Synchronized的类锁和对象锁,本质上是两把锁,类锁实际锁的是每一个类的class对象。对象锁锁的是当前对象实例。在JDK1.5及之前的版本中,synchron...原创 2018-12-10 22:30:00 · 175 阅读 · 0 评论 -
Java多线程之volatile详解
volatile作用用volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的最新的值。即每次读取volaile修饰的变量,都会强制性的从公共堆栈中进行取值,而不是从线程私有堆栈中获取。volatile是非线程安全的,最致命的缺点是不支持原子性。针对多线程使用的变量如果不是volatile或者final修饰的,很有可能产生不可预知的结果(另一个线程修改了这个值,但是之后在某线...原创 2018-12-10 22:19:01 · 254 阅读 · 0 评论 -
Java多线程之基础概念
文章目录线程状态Thread静态API对象API线程状态线程状态的扭转图如下:new:新建状态,创建一个线程对象runnable:就绪状态,线程对象创建后,其他线程调用了该对象的start()方法后会进入该状态。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权blocked:阻塞状态,线程因为某种原因放弃CPU使用权,暂时停止运行,直到线程进入runnable状态,...原创 2018-12-10 22:04:22 · 169 阅读 · 0 评论 -
Java多线程之常用并发容器的使用
文章目录ConcurrentHashMapConcurrentHashMap为什么要使用ConcurrentHashMap在多线程环境下,使用HashMap进行put操作会引起死循环,导致CPU利用率接近100%,HashMap在并发执行put操作时会引起死循环,是因为多线程会导致HashMap的Entry链表。形成环形数据结构,一旦形成环形数据结构,Entry的next节点永远不为空,就...原创 2018-12-16 22:08:18 · 1132 阅读 · 0 评论 -
Java多线程之高并发的一些概念
同步和异步同步:A调用B,B处理完毕后响应给A异步:A调用B,B先返回给A,然后在后台启动一个新的线程进行处理并行和并发并行:两个线程同时跑,适合多核CPU,是真正意义上的同时并发:一个线程分批次跑,适合单核CPU临界区临界区用来表示一种公共资源或者说共享数据,可以被多个线程使用。但是每一次,同时只能有一个线程使用它,一旦临界区资源被占用,其他线程要想使用这个资源,必须等待阻塞...原创 2018-12-10 15:44:30 · 295 阅读 · 0 评论 -
Java多线程之AbstractQueuedSynchronizer原理解析
文章目录AQS介绍ReentranLock示例公平锁和非公平锁lock操作unlock操作AQS基本使用LockSupport同步队列独占式同步状态获取与释放共享式同步状态获取与释放AQS介绍AQS队列同步器,java.util.concurrent包中很多类都依赖于这个类所提供的队列式的同步器,比如说常用的ReentranLock,Semaphore和CountDownLatch等Reen...原创 2018-12-12 17:40:17 · 1145 阅读 · 0 评论 -
Java多线程之线程池Executor
文章目录线程池Executor框架成员结构图基本使用FixedThreadPool详解SingleThreadExecutor详解CachedThreadPool详解WorkStealingPool详解ScheduledThreadPoolExecutor详解Callable、Future和FutureTask详解CompletionService详解线程池线程池作用降低资源的消耗提高...原创 2019-01-28 22:16:08 · 365 阅读 · 0 评论