摘要:
1 CAS 什么是CAS? CAS(Compare And Swap),即比较并交换。是解决多线程并行情况下使用锁造成性能损耗的一种机制,CAS操作包含三个操 作数——内存位置(V)、预期原值(A)和新值(B)。如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新 为新值。否则,处理器不 阅读全文
摘要:
java中锁的概念 简单的理解一下 乐观锁(也是自旋锁)为了不放弃cpu执行事件,循环的使用cas技术(在更改值时先再次获取值看值是否与刚才获取的相同,不相同说明被其他线程改变,则不进行操作,进行while循环,直到相同为止,再对值进行操作)对数据尝试进行更新,直到成功。 悲观锁假定会发生并发冲突, 阅读全文
摘要:
一、线程实现方式 1.继承Thread类 2.实现Runnable接口 3.线程池 4.Callable 二、无论使用继承Thread类还是实现Runnable接口,还是使用线程池都没有办法解决2个问题 1.线程执行没有返回值结果 2.线程执行没有办法抛出异常,只能自己通过try-catch解决 三 阅读全文
摘要:
一、介绍在并发队列上JDK提供了两套实现,一个是以ConcurrentLinkedQueue为代表的高性能队列,一个是以BlockingQueue接口为代表的阻塞队列,无论哪种都继承自Queue。 二、ConcurrentLinkedQueue1. 介绍ConcurrentLinkedQueue: 阅读全文
摘要:
工具类 CountDownLatch 利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。 package com.yjc.juc; import java.util.concurrent.Count 阅读全文
摘要:
一、实现多线程的方式:方式一:继承Thread类 a.自定义类继承Thread类 b.在自定义类中重写run()方法 c.创建自定义类的对象 d.启动线程的对象方式二:实现Runnable接口(大多数使用) a.自定义类实现Runnable接口 b.在自定义类中重写run()方法 c.创建自定义类的 阅读全文
摘要:
ConcurrentHashMap底层实现 1.ConcurrentHashMap和HashTable之间 ConcurrentHashMap性能高于HashTable,都能够完成线程安全操作,Hashtable中线程安全使用synchronized同步方法进行加锁操作,如果当前一个线程正在访问该集 阅读全文
摘要:
Map集合的体系 List、Set、Map 之间的区别是什么 集合面试过程中,对于单列集合经常会被问到List和set的区别 list集合元素有序并且集合元素可以重复 set集合元素无序并且集合元素不允许重复 List、Set、Map 的区别主要体现在两个⽅⾯:元素是否有序、是否允许元素重复。 三者 阅读全文
摘要:
Vector和ArrayList以及LinkedList区别和联系,以及分别的应用场景? 1:Vector Vector的底层的实现其实是一个数组 protected Object[] elementData; 他是线程安全的,为什么呢? 由于经常使用的add()方法的源码添加synchronize 阅读全文
摘要:
类加载器 Java类加载器 Bootstrap ClassLoader:根类加载器,负责加载java的核心类,它不是java.lang.ClassLoader的子类,而是由JVM自身实现; Extension ClassLoader:扩展类加载器,扩展类加载器的加载路径是JDK目录下jre/lib/ 阅读全文