摘要:
根据线程获取锁的抢占机制,锁可分为公平锁和非公平锁。 公平锁:线程获取锁的顺序是按照线程请求锁的时间顺序决定的,也就是最早请求的线程将最早获取到锁,即 FIFO 可用 JUC 中的lock提供了实现 ReentrantLock lock=new ReentrantLock (ture) 非公平锁:线 阅读全文
摘要:
1. 饿汉模式 public class Singleton { private static Singleton instance = new Singleton(); private Singleton (){ } public static Singleton getInstance() { 阅读全文
摘要:
AQS是AbstractQueuedSynchronizer的简称。AQS提供了一种实现阻塞锁和一系列依赖FIFO等待队列的同步器的框架,如下图所示。AQS为一系列同步器依赖于一个单独的原子变量(state)的同步器提供了一个非常有用的基础。子类们必须定义改变state变量的protected方法, 阅读全文
摘要:
在堆里存放着几乎多有的java对象实例,垃圾搜集器在对堆进行回收之前,第一件事情就是确定这些对象之中哪些还“存活”着(即通过任何途径都无法使用的对象)。 一、可达性分析算法 在Java中,是通过可达性分析(Reachability Analysis)来判定对象是否存活的。该算法的基本思路就是通过一些 阅读全文
摘要:
JDBC:Java Data Base Connection JDBC是用于运行sql语句并从数据库中获取新新的java API. JDBC是用来(让我们的程序)通过网络来操作数据库的,作用非常重要;JDBC技术也是Java核心技术之中的一个。 是使用JDBC驱动程序訪问数据库的首选方式 通过JDB 阅读全文
摘要:
一、读写锁 1、初识读写锁 a)Java中的锁——Lock和synchronized中介绍的ReentrantLock和synchronized基本上都是排它锁,意味着这些锁在同一时刻只允许一个线程进行访问,而读写锁在同一时刻可以允许多个读线程访问,在写线程访问的时候其他的读线程和写线程都会被阻塞。 阅读全文
摘要:
共享锁(S锁):共享 (S) 用于不更改或不更新数据的操作(只读操作),如 SELECT 语句。 如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁。获准共享锁的事务只能读数据,不能修改数据。 排他锁(X锁):用于数据修改操作,例如 INSERT、UPDATE 或 DELET 阅读全文
摘要:
ThreadLocal 和 synchronized 是 Java 中用于实现线程安全的两种机制,它们之间有以下几点区别: 作用范围不同: ThreadLocal:用于在多线程环境下,为每个线程提供独立的变量副本,每个线程都可以通过 ThreadLocal 访问自己的变量副本,互不干扰。synchr 阅读全文
摘要:
适用场景: 一、引言 1.什么是session Session 是服务器用来保存用户操作的一系列会话信息,由Web容器进行管理。最常见的,会把用户的登录信息、用户信息存储在 session 中,以保持登录状态。 2.session的创建 在会话开始时,分配一个唯一的会话标识 SessionID(se 阅读全文
摘要:
以及今天谈到的的JVM GC的类型和策略,特别是大家经常混淆的Minor GC、Major GC、Full GC,年轻代GC、老年代GC,之间有什么区别和联系。 Minor GC JVM堆内存被分为两部分:年轻代(Young Generation)和老年代(Old Generation)。 1.年轻 阅读全文