随笔分类 - ☪线程
摘要:本文原创,转载请注明出处! 参考文章: 《“JUC锁”03之 公平锁(一)》 《“JUC锁”03之 公平锁(二)》 AbstractOwnableSynchronizer,用于供子类存取独占锁的所属线程。 #getExclusiveOwnerThread()/#setExclusiveOwnerTh
阅读全文
摘要:CyclicBarrier的作用是,线程进入等待后,需要达到一定数量的等待线程后,再一次性开放通行。 CyclicBarrier(int, Runnable)构造方法,参数1为通行所需的线程数量,参数2为条件满足时的监听器。 int await()/int await(long, TimeUnit)
阅读全文
摘要:Semaphore的作用是,限制线程通行的数量,如果线程进入时达到通行数量,便等待其它正在通行的线程释放。 acquire()获取通行 release()释放通行 availablePermits()查看通行剩余次数 int drainPermits()缩减剩余通行次数为0,并返回缩减量 reduc
阅读全文
摘要:CountDownLatch的作用是,线程进入等待后,需要计数器达到0才能通行。 CountDownLatch(int)构造方法,指定初始计数。 await()等待计数减至0。 await(long, TimeUnit)在指定时间内,等待计数减至0。 countDown()计数减1。 getCoun
阅读全文
摘要:本文原创,转载请注明出处。 参考文章: 《“JUC锁”03之 公平锁(一)》 《“JUC锁”03之 公平锁(二)》 锁分独占锁与共享锁,公平锁与非公平锁,悲观锁与乐观锁,可重入锁与不可重入锁,相关概念可查看其它文章。 Lock操作:加锁(lock),解锁(unlock),创建条件对象(newCond
阅读全文
摘要:用例1:子线程等待主线程发放许可! 用例2:主线程提前发放许可给子线程! 用例3:子线程传递数据给主线程。 全部操作: park()/park(Object)等待通行准许。 parkNanos(long)/parkNanos(Object, long)在指定运行时间(即相对时间)内,等待通行准许。
阅读全文
摘要:关于volatile,找了一堆资料看,看完后想找一个方法去做测试,测了很久,感觉跟没有一样。 这本书《深入理解Java内存模型》,对volatile描述中有这样一个比喻的说法,如下代码所示,对a的读写相当于对b的同步读写。 也就是说,volatile只保证了读与写的同步,每次读取都是得到最新值,每次
阅读全文
摘要:这是我参考的一篇文章《基于CAS的乐观锁实现》,讲述的是一种需要CPU支持的执行技术CAS(Compare and Swap)。 首先理解什么是原子性操作,意思是不能再拆分的操作,例如改写一个值,读取一个值都属于原子性操作。 那么CAS是两个操作,先比较旧值,比较通过后再进行改写,这种连合操作合并成
阅读全文
摘要:ThreadLocal相当于一个Map<Thread, T>,各线程使用自己的线程对象Thread.currentThread()作为键存取数据,但ThreadLocal实际上是一个包装了这个Map,并且线程只能存取自己的数据,不能操作其它线程的数据。 T get() set(T) remove()
阅读全文
摘要:本文原创,转载请标明原处! 启动与入口 Thread对象可操纵一个线程,而Runnable对象代表一个可被运行的对象,必须使用Thread对象的start()方法启动线程。启动后,会先运行Thread对象的run()方法,这个方法未被重写时,就会执行Runnable对象的run()方法。 主线程的入
阅读全文

浙公网安备 33010602011771号