Java
文章平均质量分 67
Java技术栈
West Money
这个作者很懒,什么都没留下…
展开
-
CAS中ABA问题及解决
一、ABA 场景描述基于上节中提到的 CAS 原理,CAS 算法实现一个重要前提需要取出内存中某时刻的数据并在当下时刻比较并替换,那么在这个时间差类会导致数据的变化。设想一个场景:有线程 A、B 两个线程想对同一变量 Num = 1进行修改,此时有:第一步:线程 A 读取 Num 值为 1 。第二步:线程 B读取 Num 值为 1 。第三步:线程 B修改Num 值为 2。第四步:线程 B修改Num 值为 1。第五步:线程 A修改Num 值为 2。以上场景可以...原创 2021-01-26 17:10:30 · 432 阅读 · 0 评论 -
乐观锁:CAS
一、CAS 简述CAS:比较并交换(CompareAndSwap),应用于多线程并发场景中,实现了无锁状态下的线程安全。CAS 避免了使用互斥锁,当多个线程同时进行 CAS 指令更新同一个变量时,只有其中一个线程能够操作成功,而其他线程都会更新失败。但此时更新失败的线程并不会被阻塞,而是还可以再次 CAS 尝试。二、Unsafe 类sun.misc.Unsafe 是 Java 提供的一个可直接操作内存空间的类。其特点:1)、不受 JVM 管理,使用 Unsafe 操作内存无法被 JVM GC原创 2021-01-26 16:54:26 · 243 阅读 · 1 评论 -
Java‘volatile conception
一、Java内存模型Java内存模型简称JMM (Java Memory Model),是Java虚拟机所定义的一种抽象规范,用来屏蔽不同硬件和操作系统的内存访问差异,让java程序在各种平台下都能达到一致的内存访问效果。主内存(Main Memory):主内存被所有的线程所共享,对于一个共享变量(比如静态变量,或是堆内存中的实例)来说,主内存当中存储了它的“本尊”。工作内存(Working Memory):每一个线程拥有自己的工作内存,对于一个共享变量来说,工作内存当中存储了它的“副本”。原创 2020-11-27 16:21:35 · 116 阅读 · 0 评论 -
Threadpool Description:线程池描述
一、线程与线程的执行单元在Java中:一个线程可以通过构造 Thread 类来实现。继承Thread类创建线程类,创建Thread类的实例,即创建了线程对象。之后,通过重写 run( ) 方法来让线程执行我们想要让它执行的逻辑。然而,为了让线程生效,我们还需要通过调用start()方法来启动它。创建线程实例:new Thread( )线程的执行单元:即重写 Thread 类中的 run( ) 方法体线程的启动:调用 start( ) 方法来启动该线程run 与 start 的区别:原创 2020-11-26 16:52:41 · 159 阅读 · 0 评论 -
【Java】时间区间实现及Date类时间的区间判定工具
需求实现代码:SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); Date currDate= new Date(); sdf.format(currDate); String SUFFIX_TIME_00 ="-01-01"; String SUFFIX_TIME_01 ="-05-16"; String SUFFIX_TIME_02 ="-11-15";原创 2020-11-10 17:30:51 · 1101 阅读 · 0 评论 -
String重写的Equals
一、"==" 与 equals下边这段代码应该都看过或者写过:String str1 = "test";String str2 = "test"; String str3 = new String("test");String str4 = new String("test"); System.out.println(str1 == str2);//trueSystem.out.println(str1.equals(str2));//trueSystem.out.printl原创 2020-09-14 17:38:47 · 592 阅读 · 0 评论 -
自动装箱与拆箱:Integer & int
一、包装类型Java:面向对象,不过Java中的基本数据类型却是不面向对象的,不过在设计类时为每个基本数据类型设计了一个对应的类进行代表,所以八个和基本数据类型对应的类统称为包装类(Wrapper Class)。包装类均位于java.lang包,包装类和基本数据类型的对应关系如下表所示:基本数据类型 包装类型 byte Byte short Short int Integer long Long char Character float原创 2020-09-14 16:34:11 · 162 阅读 · 0 评论 -
Java实现文件读取与写入
package trans;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;public class ObjectFileTrans { /*文件写入路.原创 2020-09-14 10:51:20 · 306 阅读 · 0 评论 -
Spring注解:IOC的应用
一、概述注解的优势:它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作。如使用 JPA 注释配置 ORM 映射时,我们就不需要指定 PO 的属性名、类型等信息,如果关系表字段和 PO 属性名、类型都一致,甚至无需编写任务属性映射信息——因为这些信息都可以通过 Java 反射机制获取。 注释和 Java 代码位于一个文件中,而 XML 配置采用独立的配置文件...原创 2020-04-27 14:55:02 · 123 阅读 · 0 评论 -
About HashMap
一、Map的概念Map:一个集合,一种依照键(key)存储元素的容器,键(key)很像下标,在List中下标是整数。在Map中键(key)可以使任意类型的对象。Map中不能有重复的键(Key),每个键(key)都有一个对应的值(value)。一个键(key)和它对应的值构成map集合中的一个元素。Map中的元素是两个对象,一个对象作为键,一个对象作为值。键不可以重复,但是值可以重复。Map本身...原创 2020-04-20 14:22:24 · 137 阅读 · 0 评论 -
线程安全概念初探(Java)
一 线程线程是进程中实施调度和分派的基本单位。一个进程可以有多个线程,但至少有一个线程;而一个线程只能在一个进程的地址空间内活动。内存资源分配给进程,同一个进程的所有线程共享该进程所有资源。而CPU分配给线程,即真正在处理器运行的是线程。二 线程安全多线程可以带来更好的性能,但是线程也不是越多越好,多线程往往会带来许多意想不到的问题,比如因为线程之间的调度和切换会浪费CPU的时间以及下...原创 2020-04-17 22:12:29 · 174 阅读 · 0 评论