摘要:
一、哈希表? 哈希表是基于数组的一种存储方式.它主要由哈希函数和数组构成。 当要存储一个数据的时候,首先用一个函数计算数据的地址,然后再将数据存进指定地址位置的数组里面。这个函数就是哈希函数,而这个数组就是哈希表。 哈希表的优势在于:相比于简单的数组以及链表,它能够根据元素本身在第一时间,也就是时间 阅读全文
摘要:
一、了解CAS CAS全称 Compare And Swap(比较与交换),是一种无锁算法。在不使用锁(没有线程被阻塞)的情况下实现多线程之间的变量同步。 java.util.concurrent包中的原子类就是通过CAS来实现了乐观锁。 二、CAS相关 CAS算法涉及到三个操作数: 需要读写的内存 阅读全文
摘要:
介绍 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实 阅读全文
摘要:
1.为什么要使用synchronized 在并发编程中存在线程安全问题,主要原因有: 1.存在共享数据 2.多线程共同操作共享数据。关键字synchronized可以保证在同一时刻,只有一个线程可以执行某个方法或某个代码块,同时synchronized可以保证一个线程的变化可见(可见性),即可以代替 阅读全文
摘要:
一、基本概念 先补充一下概念:Java 内存模型中的可见性、原子性和有序性。 可见性: 可见性是一种复杂的属性,因为可见性中的错误总是会违背我们的直觉。通常,我们无法确保执行读操作的线程能适时地看到其他线程写入的值,有时甚至是根本不可能的事情。为了确保多个线程之间对内存写入操作的可见性,必须使用同步 阅读全文