![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
读《java高并发程序设计》笔记
821770300
这个作者很懒,什么都没留下…
展开
-
java高并发 原子性 有序性和可见性 解释
原子性:一个操作是不可中断的。即使多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰。 有序性:程序在执行时,可能会进行指令重排,重拍后的指令与原指令顺序未必一致;使用(synchronized)保证有序 可见性:一个线程修改某一个共享变量的值,其他线程立即知道修改结果。(volatile)...原创 2018-10-31 17:30:18 · 346 阅读 · 0 评论 -
wait和sleep区别
自己给自己一点压力,每天学习,每天进步。 sleep和wait 区别:wait可以主动被唤醒,wait会释放目标对象锁,而sleep不会释放任何资源 实例: 运行结果有时候有出入 请多试几次 原因可能是:线程切换 ...原创 2018-10-30 16:39:44 · 107 阅读 · 0 评论 -
线程管理
线程池: 避免系统频繁的创建和销毁线程; 提高创建线程进行复用; ThreadPoolExecutor 方法 返回值 解释 newFixedThreadPool(int nThreads) ExecutorService 固定线程数量的线程池;无空闲线程,任务暂存任务队列中,待有空闲线程便处理在任务队列中的线程 newSingleThreadExec...原创 2018-11-06 14:05:44 · 224 阅读 · 0 评论 -
java 多线程中常用的锁
1.synchronized (同步) 2.object.wait() object.notify() (配合synchronized使用) 3.readWriteLock(读写锁) 读 写 读 非阻塞 阻塞 写 阻塞 阻塞 注:读操作次数远大于写操作,读写锁优势最大 4.condition (配合lock使用 类似 object...原创 2018-11-02 15:42:57 · 687 阅读 · 0 评论 -
并发集合
jdk 提供的容器大部分在java.util.concurrent包中。 ConcurrentHashMap:高效的并发HashMap。线程安全的HashMap。 CopyOnWriteArrayList:在读多写少的场合,性能高于Vector。 ConcurrentLinkedQueue:高效的并发队列,链表实现,线程安全的LinkedList。 BlockingQueue:接口,jdk...原创 2018-11-20 15:25:42 · 115 阅读 · 0 评论 -
提高“锁”性能
1.减少锁持有时间 2.减小锁的粒度 (尽可能的细化业务代码,业务方法,在需要加锁的方法上进行加锁) 3.锁分离(读写锁) 参考LinkedBlockingQueue take(),put() 4.锁粗化(和减少锁持有时间相反,主要针对很快能执行完成的操作) 锁优化 偏向锁:一个线程获得了锁,那么锁就进入偏向模式。当这个线程再次请求锁时,无须在做任何同步操作,节省了锁申...原创 2018-11-20 15:28:39 · 104 阅读 · 0 评论