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