java基础
文章平均质量分 51
多情冷眸似水柔情
这个作者很懒,什么都没留下…
展开
-
多线程及线程池的实现
本文简短总结一下java里面多线程的实现(重点会讲一下线程池 实际工作使用最多的)。简单介绍一下概念:进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1–n个线程。(进程是资源分配的最小单位)线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。(线程是cpu调度的最小单位)线程的运行状态 有 :创建、就绪、运行、阻塞、终止。如图:简单对每个状态解释一下:创建:New 就是新建了一个线程对象就绪:Run原创 2020-06-02 09:40:04 · 324 阅读 · 1 评论 -
详解 Exception 和 Error
我们在日常开发过程中,如何处理好异常是比较考验功底的,我个人觉得对于异常需要掌握两个方面即可。1:第一,理解 Throwable、Exception、Error 的设计和分类。掌握一些常用的异常如 :NullPointerException 空指针引用异常,ClassCastException 类型强制转换异常,IndexOutOfBoundsException 下标越界异常这里不做太...原创 2020-04-13 08:43:08 · 278 阅读 · 0 评论 -
java 泛型详解
1:什么是泛型java文档给出的解释:泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不...原创 2020-04-09 09:18:23 · 121 阅读 · 0 评论 -
浅谈CAS
简述cas前 先了解一下java锁首先了解java锁按不同方式可分为 重入锁和非重入锁,重量级锁和轻量级锁,悲观锁和乐观锁…本文将从悲观锁/乐观锁这一方面讨论CAS。1.什么是乐观锁和悲观锁乐观锁:乐观锁总是乐观的认为美好的事情会发生,所以它认为竞争不总是会发生,因此它不需要持有锁,将比较-替换这两个动作作为一个原子操作尝试去修改内存中的变量,如果失败则表示发生冲突,那么就应该有相应的重试...原创 2020-04-07 09:31:28 · 191 阅读 · 0 评论 -
浅谈 HashMap,Hashtable,ConcurrentHashMap
浅谈 HashMap,Hashtable,ConcurrentHashMap相同点这3个集合都是采用key-value的数据结构存储数据。java 1.8之前底层采用数组+链表的形式 (链表是为了解决hash冲突),java1.8及以后采用数组+链表+红黑树的新式(当长度大于等于8时有链表转成红黑树,使用红黑树以加快检索速度)。不同点1, HashMap和ConcurrentHashMa...原创 2020-04-03 11:19:20 · 131 阅读 · 0 评论 -
List插入大量数据效率不一致问题
最近发现对list的多次插入后面的总是比前面的效率高。写如需代码测试:public class test { public static void main(String [] age){ List<Integer> list1 = Lists.newArrayList(); //导入了谷歌的包 可换成 new ArrayList<>(); ...原创 2019-10-26 11:47:46 · 1013 阅读 · 0 评论 -
volatile是怎么保证可见性的
volatile可见性:是指当多个线程并发访问共享变量时,一个线程对共享变量的修改,其它线程能够立即看到。那么volatile是如何保证可见性的,首先我们来简单看一下Java内存模型图:假设有一个变量 static int vlt = 0;那么首先在主内存中会一个vlt变量;同时在线程1和线程的2的线程内都有一个vlt 的副本,目的是为了提高执行效率,变量随线程结束消失。如果此时...原创 2019-09-02 10:06:18 · 4003 阅读 · 3 评论 -
单例的双重检验锁模式
1:单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。2:单例模式的实现有很多种本文着重讨论双重校验锁 首先写如下代码:package ...原创 2019-08-26 11:26:13 · 332 阅读 · 0 评论 -
stream的效率问题
近期看来有些文章说stream使java循环效率慢30倍,因此写以下代码做对比。定义一下自定义类型:@Datapublic class StreamEntity {private Long id;private String name;private Integer value;}测试类:public class StreamTest {public static v...原创 2019-08-13 10:43:43 · 6066 阅读 · 7 评论 -
final关键字
1、修饰类当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法注:被final修饰的类不能被代理 不论是jdk动态代理还是CGlib代理2、修饰方法使用final方法,以防任何继承类修改它的含义;注:...原创 2019-08-07 09:04:30 · 121 阅读 · 0 评论 -
关于List的循环效率问题
关于List的循环效率问题以 ArrayList 和LinkedList 为例:写如下代码public class TestList {public static void main(String []ages){ ArrayList<Integer> list = Lists.newArrayList(); LinkedList<Integer>...原创 2019-08-06 16:44:33 · 1548 阅读 · 0 评论