摘要: 一、时间复杂度和空间复杂度 算法是指用来操作数据。解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但是过程汇总消耗的资源和时间却会由很大的区别。 主要从算法所占用的【时间】和【空间】两个纬度去考量算法的优劣 时间纬度:是指执行当前算法所消耗的时间,通常用【时间复杂 阅读全文
posted @ 2020-09-04 14:16 mark-xiang 阅读(510) 评论(0) 推荐(0) 编辑
摘要: 一、包的结构层次 其中包含了两个子包atomic和locks,另外字concurrent下的阻塞队列以及executor,这些就是concurrent包中的精华。而这些类的实现主要是依赖于volatile和CAS,从整体上看concurrent包的整体实现图如下: 二、Lock和synchroniz 阅读全文
posted @ 2020-08-24 08:36 mark-xiang 阅读(625) 评论(0) 推荐(0) 编辑
摘要: 一、多线程的三大性质 原子性;可见性、有序性 二、原子性 原子性介绍 原子性是指:一个操作时不可能中断的,要么全部执行成功要么全部执行失败,有着同生共死的感觉。即使在多线程一起执行的时候,一个操作一旦开始,就不会被其他线程所干扰。 先看看哪些是原子操作,哪些不是原子操作: int a=10; //1 阅读全文
posted @ 2020-08-19 14:07 mark-xiang 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 一、final使用场景 final可以稀释变量,方法和类,用于便是修饰的内容一旦赋值之后不会再被改变,比如string类就是一个final类型的类。 二、final修饰变量 在Java中变量可以分为成员变量和局部变量 成员变量 通常每个类中成员变量可以分为类变量(static修饰的变量)以及实例变量 阅读全文
posted @ 2020-08-18 08:59 mark-xiang 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 一、volatile的实现原理 synchronized是阻塞式同步,在线程竞争激烈的情况下会升级为重量级锁,而volatile就可以说是JVM提供的最轻量级的同步机制。JMM告诉我们,各个线程会将共享变量从主内存中拷贝到工作内存,然后执行引擎会基于工作内存中的数据进行操作处理。线程在工作内存进行操 阅读全文
posted @ 2020-08-17 11:06 mark-xiang 阅读(331) 评论(0) 推荐(0) 编辑
摘要: 一、多线程下的i++操作的并发问题 package passtra; public class SynchronizedDemo implements Runnable{ private static int count=0; @Override public void run() { for(in 阅读全文
posted @ 2020-08-15 10:13 mark-xiang 阅读(956) 评论(0) 推荐(0) 编辑
摘要: 一、如何理解线程安全 在多线程中稍微不注意就会出现线程安全问题,那么什么是线程安全问题? 我的认识是。在多线程下代码执行的结果和预期的正确的结果不一致,该代码就是线程不安全的,否则就是线程安全的 在深入理解Java虚拟机一书中看到的定义时 当多个线程访问同一个对象时,如果不用考虑这些线程在运行环境下 阅读全文
posted @ 2020-08-14 10:42 mark-xiang 阅读(641) 评论(0) 推荐(0) 编辑
摘要: 一、为什么要用到并发 充分利用多核CPU的计算能力 方便进行业务拆分,提升应用性能 二、并发编程有哪些缺点 频繁的上下文切换 时间片是CPU分配给各个线程的时间,因为时间非常短,所以CPU不断通过切换线程,让我们觉得是不断执行的,时间片一般是几十毫秒。而每次切换时,需要保存当前的状态,以便能够进行回 阅读全文
posted @ 2020-08-07 14:51 mark-xiang 阅读(291) 评论(0) 推荐(1) 编辑
摘要: 一、HashMap的底层实现 HashMap底层是基于数组和链表实现的。其中最重要的参数:容量和负载因子。 容量的默认大小事16,负载因子是0.75,当HashMap的size>16*0.75的时候就会发生库容(容量和负载因子都可以自由调整) Hashmap实现了Map接口,允许放入null元素,出 阅读全文
posted @ 2020-07-31 13:20 mark-xiang 阅读(348) 评论(0) 推荐(0) 编辑
摘要: 一、ArrayList的底层实现 ArrayList实现与List、RandomAccess接口,是顺序接口,即元素存放的数据与放进去的顺序相同,允许放入null元素,也支持随机访问 底层通过数组实现。除该类未实现同步外,其余跟Vector大致相同 ArrayList相当于动态数据,其中最重要的两个 阅读全文
posted @ 2020-07-29 17:21 mark-xiang 阅读(275) 评论(0) 推荐(0) 编辑