随笔分类 - java多线程学习
摘要:数组也可以实现cas操作,有以下几个类以及用法如下: 运行结果为:
阅读全文
摘要:java多线程编程的无锁CAS底层都是通过 Unsafe进行操作的:源码如下
阅读全文
摘要:作者:知乎用户链接:https://www.zhihu.com/question/23089780/answer/62097840来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 相信读者在网上也看了很多关于ThreadLocal的资料,很多博客都这样说:ThreadL
阅读全文
摘要:我们都知道 SimpleDateFormat 这个类是线程 不安全的,那么我下面的程序执行就会遇到问题
阅读全文
摘要:线程不安全的SimpleDateFormat SimpleDateFormat是线程不安全的 SimpleDateFormat是Java提供的一个格式化和解析日期的工具类,日常开发中应该经常会用到,但是由于它是线程不安全的,多线程公用一个SimpleDateFormat实例对日期进行解析或者格式化会
阅读全文
摘要:一:减少锁的持有时间: 例如: 二:减小锁的粒度: 最熟悉的就是 ConcurrentHashMap,本质是分段,当put的时候,那么它会tryLock,锁定它所处的段内,对其他段数据读取不进行阻塞 三:使用读写分离锁来代替独占锁 四:锁分离 最熟悉的就是LinkedBlockingQueue,当用
阅读全文
摘要:一、前言 concurrentHashMap与ConcurrentSkipListMap性能测试 在4线程1.6万数据的条件下,ConcurrentHashMap 存取速度是ConcurrentSkipListMap 的4倍左右。 但ConcurrentSkipListMap有几个Concurren
阅读全文
摘要:构造方法:public ArrayBlockingQueue(int capacity) { this(capacity, false); } public ArrayBlockingQueue(int capacity, boolean fair) { if (capacity <= 0) thr
阅读全文
摘要:源码分析:读写(get,add) 一:get 方法
阅读全文
摘要:队列、链表之类的数据结构及其常用。Java中,ArrayList和Vector都是使用数组作为其内部实现。两者最大的不同在于:Vector是线程安全的,而ArrayList不是。此外LinkedList使用链表的数据结构实现了List,但并不是线程安全的,就像之前包装HashMap,这里我们可以使用
阅读全文
摘要:代码:public class SysHashMao { private static Map<String,String> map= Collections.synchronizedMap(new HashMap<String,String>()); public static void main
阅读全文
摘要:100.033.025.050.0 细心的你肯定会说,我们明明是开启了5个线程,为什么会得到4个结果呢,即使是100/0,那么也会报异常,为什么会没有呢。难道是线程池把错了“吃了吗?”。对于我们来说如果发现错误但是没有异常信息那是一件多么可怕的事情啊。 所以线程池好用,但是也存在我们所说的坑啊。上面
阅读全文
摘要:线程池的大小对系统的性能有一定的影响。过大或者过小的线程数量都无法发挥到最优的系统性能。只要避免线程池的过大或者过小,那么一把来说线程池对系统的性能影响不大。我经常参考的线程池大小的经验公式: Ncpu=CPU的数量 Ucpu=目标CPU的使用率,0<= Ucpu<=1 W/C=等待的时间与计算的时
阅读全文
摘要:参数说明:public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue) { this(cor
阅读全文
摘要:package 第三章.线程阻塞工具LockSupport;import java.util.concurrent.locks.LockSupport;/** * Created by zzq on 2018/2/2. */public class LockSupportDemo { public
阅读全文
摘要:package 第三章.循环栅栏CyclicBarrier;import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;/** * Created by zzq on 201
阅读全文
摘要:一、分为两种:公平和非公平线程 a b c d e公平:按顺序执行:a,b,d,e 读锁 c 写锁 1.a,b 执行 c 堵塞,d,e 等待 2.a,b执行结束 c获取锁 d,e堵塞等待 3.c执行结束 d开始执行,然后在唤醒e非公平: 1,2步骤相同 3,c执行结束的时候,新来个线程 f读锁,在d
阅读全文
摘要:package 第三章.倒计时器CountDownLatch;import java.util.concurrent.CountDownLatch;/** * Created by zzq on 2018/1/24. */public class CountDoenLatchTest impleme
阅读全文
摘要:package 第三章.信号量;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Semaphore;/** * Created
阅读全文
摘要:package 第三章.重入锁;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.ReentrantLock;/** * Created by zzq on 2018/1/23. */publi
阅读全文