
Java基础
文章平均质量分 79
qq_34989829
这个作者很懒,什么都没留下…
展开
-
volatile和synchronized的区别
volatile和synchronized的区别 共性 volatile与synchronized都用于保证多线程中数据的安全 区别 volatile修饰的变量,JVM每次都从主存(主内存)中获取,而不会从寄存器(工作内存)中获取。而synchronized则是锁住当前变量,同一时刻只有一个线程可以访问当前变量。 volatile仅能用在变量级别,而synchronized可以用在变量和方法级别。 volatile仅能实现变量的修改可见性,无法保证变量操作的原子性。而synchronized可以实现变量的转载 2020-07-05 21:28:03 · 184 阅读 · 0 评论 -
线程和线程安全
这样线程和线程安全 进程 正在运行中的程序就是进程;解释如下图 线程 进程中的一个独立的执行路径。解释如下图 线程的分类 单线程:同一时间只能干一件事.(多件事只能等一个处理完成后才能开始处理下一个) 多线程:同一时间能干多件事情。(可以辅助线程的并行理解) 主线程:程序启动系统自动创建并执行main方法的线程。主线程的执行入口:main方法 (说起主线程在这里顺便提一下 守护线程:指为其他线程提供服务的线程,也称为守护线程。JVM的垃圾回收线程就是一个后台线程。用户线程和守护线程的区别在于,是否等待转载 2020-07-05 20:56:53 · 116 阅读 · 0 评论 -
多线程的几种实现方式
多线程的几种实现方式 无返回值:重写run方法实现,run方法的返回值是void(),所以没有办法返回结果。 继承Thread类,重写run方法 实现Runnable接口,重写run方法,实现Runnable接口的实现类的实例对象作为Thread构造函数的target 有返回值:通过Callable接口,就要实现call()方法,这个方法的返回值是Object,所以返回结果也是Object。 通过Callable和FutureTask创建线程 通过线程池创建线程 继承Thread类,重写run方法转载 2020-07-05 17:10:48 · 149 阅读 · 0 评论 -
Java线程池
Java线程池 线程资源必须通过线程池来提供,不能在应用中自行显示创建线程。 线程池的好处:减少在创建和销毁线程上所花费的时间以及系统资源的开销,解决资源不足的问题。如果不使用线程池,有可能造成系统创建大量同类线程而导致消耗完内存或者“过度切换”的问题。 线程池的目的: 线程是稀缺资源,不能频繁创建。 解耦作用,线程的创建与执行完全分开,方便维护。 应当将其放入一个池子中,可以给其他任务进行复用。 线程原理 最核心思想:把宝贵的资源放到一个池子中,每次使用都从里面获取,用完以后又放到池子里供其他任务使用转载 2020-07-05 16:08:09 · 122 阅读 · 0 评论 -
HashMap底层实现原理
HashMap底层实现原理 概述 HashMap基于Map接口实现,元素以键值对(Key-Value)的方式存储,Key值和Value值都允许为null,但是Key值不允许重复,因此只能有一个Key为null。 HashMap不能保证元素存入的顺序,它是无序的。 HashMap是线程不安全的,多线程环境中推荐是ConcurrentHashMap。 HashMap的扩容操作是一项很耗时的任务,如果能够估算Map的容量,最好设置一个默认初始值,避免进行多次扩容。 继承关系 public class HashMa转载 2020-07-05 13:45:34 · 246 阅读 · 0 评论 -
ArrayList底层实现原理
ArrayList底层实现原理 ArrayList是基于数组实现的,是一个动态数组,其容量可以自动增长,初始容量是10。 ArrayList是线程不安全的,可以单线程情况下使用,如果要在多线程情况下使用,可以用Collections.synchronizedList(List l)函数返回一个线程安全的ArrayList类,也可以使用concurrent并发包下的CopyOnWriteArrayList类。 ArrayList实现了Serializable接口,因此它支持序列化,能够通过序列化传输,实现了R转载 2020-07-05 12:14:28 · 301 阅读 · 0 评论 -
JAVA集合
集合 为什么需要集合 Java是一门面向对象的语言,自然就少不了去处理对象。 为了方便操作多个对象,我们就需要把这多个对象存储起来 想要存储多个对象(变量),我们就需要一个容器 我们常用的容器有StringBuffered、对象数组,但是数组的长度不可变的 这时候我们就需要用到集合了。 数组和集合的区别 长度的区别:数组的长度是固定的,集合的长度是可变的 元素的数据类型:数组支持基本的数据类型,也支持引用类型,集合只支持引用类型(存入一个int类型,它会自动装箱成Integer) 元素的内容:数组只能存储原创 2020-07-05 12:12:01 · 128 阅读 · 0 评论