随笔分类 -  java并发

摘要:多线程顺序打印100个数 一、前言 昨天群友问了个有意思的问题 多线程打印1-100,线程1打印123,线程2打印456,线程3答应789,以此类推 不能出现乱序 故今天实现一番 二、实现 本人的思路是为每个线程编号, 定义公共变量nextPrintThreadSeq表示将要打印的线程编号, 以此来 阅读全文
posted @ 2020-04-25 09:29 timfruit 阅读(1717) 评论(0) 推荐(0)
摘要:线程池的使用 一丶什么是线程池 为了避免系统频繁的创建和销毁线程, 需要将创建好的线程"存储"管理起来复用, 可以形象的理解为"池子", 当需要线程时, 则向线程池申请一个线程, 用完之后,并不会销毁, 而是将线程归还给线程池, 减少线程的创建和销毁. 二丶为什么需要线程池 1) 多线程虽然可以提高 阅读全文
posted @ 2019-07-03 23:04 timfruit 阅读(202) 评论(0) 推荐(0)
摘要:AQS之ConditionObject 一丶Condition Condition(java.util.concurrent.locks.Condition) 分解 Object monitor方法( wait(), notify(), notifyAll() ) 进去不同的对象, 通过配合Lock 阅读全文
posted @ 2019-06-10 23:41 timfruit 阅读(616) 评论(0) 推荐(0)
摘要:学习ReentrantLock 一丶什么是ReentrantLock ReentrantLock是java并发包中锁的一种实现, 它是重入锁, 即获取锁之后,自身可再次获取锁, 自身并不会造成死锁, 可以认为它是关键字sychronized的替代品,但它比sychronized有更丰富的功能, 如提 阅读全文
posted @ 2019-06-08 15:17 timfruit 阅读(256) 评论(0) 推荐(0)
摘要:学习CAS 一丶什么是CAS CAS(Compare And Swap) 即比较交换, 给定一个期望值, 当将要修改的变量值和期望值一致时(即其他线程没有修改), 就修改对应的变量值, 否则什么也不做, 它允许再次尝试比较交换, 直到成功为止. 二丶CAS算法过程 CAS(V,E,N). V表示要更 阅读全文
posted @ 2019-06-08 11:20 timfruit 阅读(212) 评论(0) 推荐(0)
摘要:学习AQS 一丶AQS 什么是AQS? Java并发包中的抽象队列同步器(AbstractQueuedSchronizer), 它是java中构建锁和其他同步组件的基础框架. 如常用的重入锁ReetrantLock, 都是基于该同步框架实现的. 二丶理解 整体思路, 维护一个锁状态state(int 阅读全文
posted @ 2019-06-07 16:37 timfruit 阅读(232) 评论(0) 推荐(0)