11 2021 档案

摘要:强引用:我们常常 new 出来的对象就是强引用类型,只要强引用存在,垃圾回收器将永远不会回收被引用的对象,哪怕内存不足的时候; 软引用:使用 SoftReference 修饰的对象被称为软引用,软引用指向的对象在内存要溢出的时候被回收 ; 弱引用:使用 WeakReference 修饰的对象被称为弱 阅读全文
posted @ 2021-11-30 18:37 光一 阅读(61) 评论(0) 推荐(0)
摘要:多线程编程中一般线程的个数都大于 CPU 核心的个数,而一个 CPU 核心在任意时刻只能被一个线程使用,为了让这些线程都能得到有效执行,CPU 采取的策略是为每个线程分配时间片并轮转的形式。 当一个线程的时间片用完的时候就会重新处于就绪状态让给其他线程使用,这个过程就属于一次上下文切换。 概括来说就 阅读全文
posted @ 2021-11-30 11:46 光一 阅读(168) 评论(0) 推荐(0)
摘要:一、哈希表? 哈希表是基于数组的一种存储方式.它主要由哈希函数和数组构成。 当要存储一个数据的时候,首先用一个函数计算数据的地址,然后再将数据存进指定地址位置的数组里面。这个函数就是哈希函数,而这个数组就是哈希表。 哈希表的优势在于:相比于简单的数组以及链表,它能够根据元素本身在第一时间,也就是时间 阅读全文
posted @ 2021-11-29 17:35 光一 阅读(37) 评论(0) 推荐(0)
摘要:一、了解CAS CAS全称 Compare And Swap(比较与交换),是一种无锁算法。在不使用锁(没有线程被阻塞)的情况下实现多线程之间的变量同步。 java.util.concurrent包中的原子类就是通过CAS来实现了乐观锁。 二、CAS相关 CAS算法涉及到三个操作数: 需要读写的内存 阅读全文
posted @ 2021-11-29 15:53 光一 阅读(632) 评论(0) 推荐(0)
摘要:介绍 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实 阅读全文
posted @ 2021-11-29 15:21 光一 阅读(58) 评论(0) 推荐(0)
摘要:1.为什么要使用synchronized 在并发编程中存在线程安全问题,主要原因有: 1.存在共享数据 2.多线程共同操作共享数据。关键字synchronized可以保证在同一时刻,只有一个线程可以执行某个方法或某个代码块,同时synchronized可以保证一个线程的变化可见(可见性),即可以代替 阅读全文
posted @ 2021-11-29 14:41 光一 阅读(360) 评论(0) 推荐(0)
摘要:一、基本概念 先补充一下概念:Java 内存模型中的可见性、原子性和有序性。 可见性: 可见性是一种复杂的属性,因为可见性中的错误总是会违背我们的直觉。通常,我们无法确保执行读操作的线程能适时地看到其他线程写入的值,有时甚至是根本不可能的事情。为了确保多个线程之间对内存写入操作的可见性,必须使用同步 阅读全文
posted @ 2021-11-29 10:49 光一 阅读(75) 评论(0) 推荐(0)
摘要:https://www.cnblogs.com/SimpleWu/p/10930388.html 阅读全文
posted @ 2021-11-08 17:38 光一 阅读(74) 评论(0) 推荐(0)
摘要:一、 Why Lambda 原因: 为了让代码更简洁,更优雅,优化程序。 Lambda表达式可以看做函数式编程的子集。 之前看过一位博主的写的一句便于理解的一种说法: Lambda表达式,其实是一段可传递的代码。 它的本质是以类的身份,干方法的活。 博主:bravo1988 可以在知乎搜到他。 精辟 阅读全文
posted @ 2021-11-06 13:50 光一 阅读(47) 评论(0) 推荐(0)
摘要:https://www.cnblogs.com/flashsun/p/14368520.html 阅读全文
posted @ 2021-11-05 10:46 光一 阅读(17) 评论(0) 推荐(0)