Java
JFound
奋斗中的Javaer
展开
-
5.JUC整理笔记五之梳理Varhandle(下)
前文综合描述了 Varhandle 以及 Varhandle 能够做的事情,但是要了解并使用 Varhandle 并非是一件容易的事。总的来说,要想很好地使用 Varhandle ,必须先了解plain(普通方式)、opaque、release/acquire、volatile 的区别及使用。结合前面所学习的 jcstress ,本文用 jcsstress 作为并发测试工具来结合一些例子说明 plain、opaque、release/acqiure、volatile的特性。如果不知道 jcstress原创 2020-06-03 19:04:16 · 703 阅读 · 0 评论 -
我的事务为什么会失效
我的事务为啥会失效?在用Spring的时候,我们经常用过使用@Transactional声明式事务,但是有些时候,@Transactional声明的事务却是没有生效。一个例子。环境数据库为innodb,代码为基于spring的一个demo。Demo代码如下:package jfound.demo;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereoty原创 2020-05-30 17:08:02 · 246 阅读 · 0 评论 -
Spring注入的对象是什么类型
开篇之前,在用spring编码调试的时候,有时候发现被自动注入的对象是原始类的对象,有时候是代理类的对象,那什么时候注入的原始类对象呢,有什么时候注入的是代理类的对象呢?心里就留下了这个疑问。后来再次看spring aop的时候变有了大胆的想法。案例先添加springboot依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot原创 2020-05-30 17:04:54 · 310 阅读 · 0 评论 -
一文读懂Java注解
什么是注解Java官方文档上说,注解是元数据的一种形式,它提供不属于程序一部分的数据,注解对被注解的代码没有直接的影响。准确上说,注解只不过是一种特殊的注释而已,如果没有解析它的代码,它可能连注释都不如。主要用途注解有很多种中途,其中包括:提供编译器使用信息编译器可以使用这些注解来检查错误或者禁止显示告警,如@Override**、@Deprecated、@SuppressWarnings编译或部署时处理可以通过注解信息生产相关代码,如lombok的**@Data**、@ToStri原创 2020-05-30 17:03:35 · 283 阅读 · 0 评论 -
深入剖析ThreadLocal原理
描述ThreadLocal,很多地方叫做线程本地变量,也有些地方叫做线程本地存储。ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。通常使用静态的变量来维护ThreadLocal 如:static ThreadLocal<String> userIdThreadLocal = new ThreadLocal<String>通常用来保存userId、TransactionId等。spring也很经常用ThreadLocal来保原创 2020-05-30 17:02:17 · 166 阅读 · 0 评论