重入锁可以完全替代synchronized关键字。在JDK 6.0以前,重入锁的性能远远好于synchronized,但是在JDK 6.0以后,JDK在synchronized上做了大量的优化,两者的性能差距并不大。 重…
标签:JUC
JUC之AQS之Semaphore(信号量)
Semaphore为多线程协作提供了强大的控制方法,可以看成是对锁的一种扩展。无论是内部锁synchornized还是重入锁ReetrantLock,一次都允许一个线程访问一个资源,Semaphore可以限制多个线程同时…
JUC之读写锁
读写锁在JDK文档中介绍的很清楚: 读写锁可以看成一种乐观锁,可以有效地帮助减少锁竞争,以提升系统性能。如果使用sychornized或者ReentrantLock则理论上来说所有的读、写之间都是串行操作,都是互斥的,但…
JUC之AQS之CountDownLatch
CountDownLatch允许一个或多个线程等待其他线程完成操作。 比如如果要实现一个这样的功能:要让主线程等待所有线程完成自己的操作后再执行,最简单的做法是使用join()方法(可参看https://blog.csd…
JUC之AQS之CyclicBarrier
CyclicBarrier的字面意思是可循环使用(Cyclic)的屏障(Barrier)。它要做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才…
【stagefrightplayer】4 OMX Codec介绍
概述 OMX Codec是stagefrightplayer中负责解码的模块。 由于遵循openmax接口规范,因此结构稍微有点负责,这里就依照awesomeplayer中的调用顺序来介绍。 …
juc集合框架
collections Queues BlockingQueue:通常用于一个线程生产对象,而另外一个线程消费这些对象的场景 LinkedBlockingQueue ArrayBlockingQueue Synchron…
JUC学习--volatile关键字&内存可见性
学习记录,若存在错误,请指出,谢谢! 首先,介绍一些内存可见性 内存可见性:当多个线程操作共享数据时,彼此不可见 为什么会导致这个情况? 在线程运行的过程中,JVM或者说是内存会为每一个线程分配一个独立的缓存用于提高效率…
JUC学习之同步容器类ConcurrentHashMap
本文是看视频的笔记,若有错误请指出,谢谢! jdk1.5之后添加了ConcurrentHashMap类,其底层是CAS算法实现的,采用的是“锁分段”机制,有个concurrentLevel分段级别,默认的级别为16,也就…
JUC学习之CountDownLatch 闭锁
本文为看视频学习笔记,若有错误请指正,谢谢! 1.什么是CountDownLatch ? 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或者多个线程一直等…
JUC学习之创建线程执行的方式三-实现Callable接口
本文是看视频学习资料,若有错误请指正! 我想所有人都知道,创建线程执行方式有2种:继承Thread类创建线程;实现Runnable接口创建线程, 但是实际上,创建执行线程的方式有4种:除了上述2种,还有实现Callabl…
JUC学习之Lock同步锁
本文为看视频学习笔记,若有错误请指正! 解决线程安全问题的方式一共有3种1.同步代码块2.同步方法3.同步锁Lock 其中第1,2种方式是jdk1.5之前就已经提供了的,使用的时候我们需要加上synchronized关键…