
笔试&面试
文章平均质量分 54
土豆面包
这个作者很懒,什么都没留下…
展开
-
volatile关键字修饰的变量是否线程安全
文章目录volatile关键字变量可见性禁止重排序volatile关键字是否可以保证线程安全 volatile关键字 Java 语言提供了一种稍弱的同步机制,即 volatile 变量,用来确保将变量的更新操作通知到其他线程。volatile 变量具备两种特性,volatile 变量不会被缓存在寄存器或者对其他处理器不可见的地方,因此在读取 volatile 类型的变量时总会返回最新写入的值。 变量可见性 其一是保证该变量对所有线程可见,这里的可见性指的是当一个线程修改了变量的值,那么新的 值对于其他线程是原创 2021-04-05 18:21:02 · 1835 阅读 · 3 评论 -
Java线程池 & 4种线程池介绍
文章目录线程池概念4种线程池newCashedThreadPoolnewFixedThreadPoolnewScheduledThreadPoolnewSingleThreadExecutor 线程池 概念 线程和数据库连接这些资源都是非常宝贵的资源。那么每次需要的时候创建,不需要的时候销毁,是非常浪费资源的。那么我们就可以使用缓存的策略,也就是使用线程池。 //创建线程池 ExecutorService threadPool = Executors.newFixedThreadPool(10); whil原创 2021-04-05 18:19:31 · 195 阅读 · 0 评论 -
HashMap和ConcurrentHashMap:Java7和Java8比较
文章目录HashMapJava7Java8ConcurrentHashMapsegment段线程安全(Segment继承 ReentrantLock 加锁)并行度Java7Java8 HashMap Java7 底层:数组+链表 大方向上,HashMap 里面是一个数组,然后数组中每个元素是一个单向链表。上图中,每个绿色的实体是嵌套类 Entry 的实例,Entry 包含四个属性:key, value, hash 值和用于单向链表的 next capacity:当前数组容量,始终保持 2^n,可以扩容原创 2021-04-05 18:17:58 · 360 阅读 · 1 评论 -
顺序执行T1、T2、T3三个线程:join()方法的使用
join()方法的作用 Thread类中的join方法的主要作用就是同步,它可以使得线程之间的并行执行变为串行执行。当我们调用某个线程的这个方法时,这个方法会挂起调用线程,直到被调用线程结束执行,调用线程才会继续执行。 Demo package exer; public class ThreadInSequence{ static ThreadInSequence t = new ThreadInSequence(); class T1 extends Thread{ @O原创 2021-04-05 12:13:00 · 586 阅读 · 0 评论 -
Java中四种引用类型:强引用、软引用、弱引用、虚引用
Java四种引用类型 强引用(Strong Reference) 在 Java 中最常见的就是强引用,把一个对象赋给一个引用变量,这个引用变量就是一个强引用。 当一个对象被强引用变量引用时,它处于可达状态,它是不可能被垃圾回收机制回收的,即使该对象以后永远都不会被用到 JVM 也不会回收。因此强引用是造成 Java 内存泄漏的主要原因之一。 软引用(Soft Reference) 软引用需要用 SoftReference 类来实现。 对于只有软引用的对象来说,当系统内存足够时它不会被回收,当系统内存空间不足原创 2021-04-05 12:16:48 · 503 阅读 · 3 评论