多线程-学习笔记
渐行渐远-
GitHub: https://github.com/junjun888
展开
-
volatile 关键字
Volatite是什么?: 就是一个 用于 保证一个变量在多个线程间可见的 修饰符怎么用?: 修饰在变量前面 比如:private volatite i;为什么要用?: 效率高。它可以看成一个轻量级的 synchronized 但不保证同步,只保证可见。原理: 就是 一旦这个变量被 volatite 修饰以后,如果这个变量的值被改变,则以后不管哪个线程去读取这个变量,都要从主内存中获取。而不原创 2017-10-07 14:54:14 · 275 阅读 · 0 评论 -
Java 层面的锁
Java 层面的锁Java 层面的锁重入锁 ReentrantLock读写锁 ReentrantReadWriteLock锁的等待和通知 在 Java 的多线程中,我们知道可以使用 synchronized 关键字来实现线程间的同步互斥工作, 其实还有一个更优秀的机制去实现 同步互斥的 工作,那就是 Lock 对象。重入锁 (ReentrantLock)基本使用:Lock lock = n原创 2017-10-15 22:17:47 · 327 阅读 · 0 评论 -
Concurrent.util 常用类的介绍和使用
Concurrent.util 常用类的介绍和使用Concurrentutil 常用类的介绍和使用CyclicBarrierCountDownLacthCallable 和 FutureSamaphore 信号量CyclicBarrier 假设一个场景: 每个线程都代表一个跑步运动员,当运动员都准备好后才一起出发,只要有一个没准备好,大家都等待。 package org.mulit原创 2017-10-14 21:49:47 · 1086 阅读 · 0 评论 -
Executor 框架简介
Executor 框架Executor 框架Executor 框架简介Executors 创建线程池方法newFixedThreadPoolnewSingleThreadExecutornewCachedThreadPoolnewScheduledThreadPool更多通过 ThreadPoolExecutor类去 自定义线程池Executor 框架简介 为了更好的控制多线程原创 2017-10-08 23:33:57 · 517 阅读 · 0 评论 -
BlockingQueue 接口详解
BlockingQueue 接口BlockingQueue 接口ArrayBlockingQueueLinkedBolckingQueueSynchronousQueuePriorityBlockingQueueDelayQueueArrayBlockingQueue Array**Blocking**Queue 是基于数组的阻塞队列实现,在 ArrayBlockingQueue 内原创 2017-10-08 23:33:02 · 966 阅读 · 0 评论 -
Concurrent 与 CopyOnWrite 容器简单介绍
Concurrent与CopyOnWrite 容器Concurrent与CopyOnWrite 容器ConcurrentMap 两个重要实现ConcurrentHashMap ConcurrentSkipListMap支持并发排序 CopyOnWrite 两个重要实现CopyOnWriteArrayList CopyOnWriteArraySet ConcurrentMap 两个重要实现原创 2017-10-07 17:51:35 · 498 阅读 · 0 评论 -
两种比较好的单例实现
静态内部类public class InnerSingleton() { private static class Singleton { private static Singleton single = new Singleton(); } private InnerSingleton() {} public static Singleto...原创 2017-10-07 14:58:04 · 358 阅读 · 0 评论 -
wait 和 notify 实现线程间通信
wait 和 notify是什么?: 用户线程通信的两个 object 的方法,而且 必须配合 synchronized 使用怎么用?: 使用 wait 可以使持有当前对象锁的线程阻塞住,并且释放 持有的当前对象的锁。使用 notify可以唤醒当前对象阻塞住的线程为什么要用?: 实现线程间通信原理: 待补充更多 wait 方法释放锁,notify不释放锁。但这个方法有缺点原创 2017-10-07 14:55:01 · 247 阅读 · 0 评论 -
Java 读写配置文档 线程安全
因为业务需求不能使用数据库, 只能用文档存储数据, 但是又要保证线程安全. 所以就使用读写锁去完成这个需求, 代码如下:package com.lb.template.util;import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.F...原创 2018-03-02 15:01:26 · 673 阅读 · 0 评论