![](https://img-blog.csdnimg.cn/20200611101037817.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
01、java
java
独行侠的守望
在繁华里自律,在落魄里自励;在尘埃里自尊,在伤痛里自愈。
展开
-
@Transactional 事务提交之后执行 @Async 修饰的方法
需求 一个 @Transactional 修饰的方法A 的内部要调用另一个用 @Async 修饰的方法B,并且方法B 要在方法A 的事务提交之后,异步执行,大致如下:@Transactionalpublic void updateA(..) { batchInsert(..); update(..); updateB(..);}@Asyncpublic void updateB(..) { update(..)}分析 方...转载 2020-11-22 12:18:59 · 827 阅读 · 0 评论 -
java对象自救
转载 2020-07-14 14:19:13 · 243 阅读 · 0 评论 -
深入理解虚拟机之类文件结构
https://segmentfault.com/a/1190000014807063转载 2020-07-01 08:25:21 · 2480 阅读 · 0 评论 -
Synchronized 偏向锁、轻量级锁、自旋锁、锁消除
https://www.cnblogs.com/paddix/p/5405678.htmlJava并发编程:Synchronized底层优化(偏向锁、轻量级锁)Java并发编程系列: Java 并发编程:核心理论 Java并发编程:Synchronized及其实现原理 Java并发编程:Synchronized底层优化(轻量级锁、偏向锁) Java 并发编程:线程间的协作(wait/notify/sleep/yield/join) Java 并发..转载 2020-07-01 08:25:38 · 739 阅读 · 0 评论 -
Java多线程常用面试题(含答案,精心总结整理)
ps:原文地址丢失,有疑问请联系删除什么是不可变对象,它对写并发应用有什么帮助?另一个多线程经典面试问题,并不直接跟线程有关,但间接帮助很多。这个java面试问题可以变的非常棘手,如果他要求你写一个不可变对象,或者问你为什么String是不可变的。immutable Objects(不可变对象)就是那些一旦被创建,它们的状态就不能被改变的Objects,每次对他们的改变都是产生了新的immutable的对象,而mutable Objects(可变对象)就是那些创建后,状态可以被改转载 2020-07-01 08:28:35 · 391 阅读 · 0 评论 -
多线程-interrupt(),isInterrupted(),interrupted()
Content背景 中断 相关方法 阻塞方法 不可中断的阻塞方法 处理不支持中断的线程中断的常用方法 处理InterruptedException 待决中断 实例1 实例2 参考资料Top背景由于使用stop方法停止线程非常暴力,可能会导致一系列问题。因此,提出一种温和的方式:请求另外一个先不要在执行了,这就是中断方式。 此外有这样的场景:编写 一个程序,需要暂停一段时间,于是调用Thread.sleep(),但是编译器或IDE报错说没有处理检查到的Inter...转载 2020-07-01 08:28:08 · 316 阅读 · 0 评论 -
Java并发之AQS详解
一、概述 谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)! 类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock/Semaphore/CountDownLatch...。 以下是本文的目录大纲: 概述 框架 源码详解 简单应用 若有不正之处,请谅解和批评指正,不胜感激。转载 2020-07-01 08:26:01 · 124 阅读 · 0 评论 -
详解synchronized与Lock的区别与使用
转载地址:https://blog.csdn.net/zhangcanyan/article/details/80284586昨天在学习别人分享的面试经验时,看到Lock的使用。想起自己在上次面试也遇到了synchronized与Lock的区别与使用。于是,我整理了两者的区别和使用情况,同时,对synchronized的使用过程一些常见问题的总结,最后是参照源码和说明文档,对Lock的使用写了几个简单的Demo。请大家批评指正。技术点:1、线程与进程:在开始之前先把进程与线程进行区分一.转载 2020-07-01 08:27:31 · 523 阅读 · 0 评论 -
垃圾回收器都有哪些?
垃圾回收器有哪些?是一个高频的面试题,那本文就详细来解答这个问题。因为不同的厂商(IBM、Oracle),实现的垃圾回收器各不相同,而本文要讨论的是 Oracle 的 HotSpot 虚拟机所使用的垃圾回收器。常用垃圾回收器,如下图所示: 新生代回收器:Serial、ParNew、Parallel Scavenge 老年代回收器:Serial Old、Parallel Old、CMS 整堆回收器:G1 其中相互连线的垃圾回收器,表示可以相互搭配使用。新生代 An转载 2020-06-30 08:59:50 · 1003 阅读 · 0 评论 -
Java对象的内存分配过程是如何保证线程安全的?
JVM内存结构,是很重要的知识,相信每一个静心准备过面试的程序员都可以清楚的把堆、栈、方法区等介绍的比较清楚。上图,是一张在作者根据《Java虚拟机规范(Java SE 8)》中描述的JVM运行时内存区域结构画的。很多人都知道Java对象是在堆内存中分配空间的(JIT优化除外),也知道内存分配过程中是线程安全的,那么虚拟机到底是如何保证线程安全的呢?本文就来简单介绍一下。1Java对象的内存分配我们知道,Java是一门面向对象的语言,我们在Java中使用的对象都需要被创建出来,.转载 2020-06-30 08:57:39 · 569 阅读 · 0 评论 -
Jvm中如何判断对象的生死?
但凡问到 JVM(Java 虚拟机)通常有 99% 的概率一定会问,在 JVM 中如何判断一个对象的生死状态?判断对象的生死状态的算法有以下几个:1、引用计数器算法引用计算器判断对象是否存活的算法是这样的:给每一个对象设置一个引用计数器,每当有一个地方引用这个对象的时候,计数器就加1,与之相反,每当引用失效的时候就减1。优点:实现简单、性能高。缺点:增减处理频繁消耗cpu计算、计数器占用很多位浪费空间、最重要的缺点是无法解决循环引用的问题。因为引用计数器算法很难解决循环引用的问题,所转载 2020-06-30 08:53:30 · 159 阅读 · 0 评论 -
垃圾回收算法
关于垃圾回收算法的这道面试题,几乎是所有 3 年以上的 Java 面试中必问的题目,甚至有些好一点的公司会在校招时问到面试者。那么本文就系统的讲一下垃圾回收的算法,和 Hotspot 虚拟机执行垃圾回收的一些实现细节,比如安全点和安全区域等。因为各个平台的虚拟机操作内存的方法各不相同,且牵扯大量的程序实现细节,所以本文不会过多的讨论算法的具体实现,只会介绍几种算法思想及发展过程。垃圾回收算法1、标记-清除算法标记-清除算法是最基础的算法,像它的名字一样算法分为“标记”和“清除”两个阶段,首先转载 2020-06-30 08:50:11 · 1560 阅读 · 0 评论 -
为什么不推荐使用 DCL(双重检查加锁)
为什么不推荐使用 DCL(双重检查加锁)双重检查加锁被熟知为“懒汉式”单例模式的实现,下文将统一称之为 DCL。早期 JVM 中因为同步的开销巨大,为了降低实现单例模式中同步带来的开销,人们想出了很多技巧,DCL 便是其中一种。一段常规的 DCL 实现的单例模式如下:public class DoubleCheckedLocking { private static SingleInstance singleInstance; public static..转载 2020-06-27 13:40:59 · 744 阅读 · 0 评论 -
高并发下接口幂等性解决方案
高并发下的接口幂等性解决方案!blog.csdn.net/u011635492/article/details/81058153一、背景 二、幂等性概念 三、技术方案 总结虽然你可能找不到对象,但你还是可以每天面向对象编程啊!一、背景我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。例如: 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果。 我们发起一笔付款请求,应该只扣用户账户一次钱,当遇到网络重发或系统bug重发,也应该只转载 2020-06-25 09:08:08 · 136 阅读 · 0 评论 -
还在使用 SimpleDateFormat ?你的项目崩没?
转载 2020-06-24 08:43:52 · 98 阅读 · 0 评论 -
12个java 语法糖
转载 2020-06-24 08:45:23 · 73 阅读 · 0 评论 -
线程安全问题
什么时候我们会考虑线程安全问题呢?1.1、多线程并发的环境下1.2、有共享的数据1.3、共享的数据涉及到修改操作以上三个条件都具备的时候才会考虑程序存在线程安全隐患。遇到线程安全问题之后怎么解决?首选方案是使用局部变量代替实例变量和静态变量若必须使用实例变量,可以考虑让对象变成多例,若必须使用单实例,可以考虑使用synchronized进行线程同步,线程排队执行,但是这种方案通常...原创 2019-04-08 09:37:00 · 165 阅读 · 0 评论 -
《java多线程编程核心技术》不使用等待通知机制 实现线程间通信的 疑问分析...
不使用等待通知机制 实现线程间通信的 疑问分析2018年04月03日 17:15:08 ayf阅读数:33编辑《java多线程编程核心技术》一书第三章开头,有如下案例:线程A:package extthread; import mylist.MyList; public class ThreadA extends Thread { ...原创 2019-04-09 11:17:00 · 123 阅读 · 0 评论 -
集合 - 树状结构体系
原创 2019-04-14 14:41:00 · 927 阅读 · 0 评论 -
JUC中的锁
★、不同角度的锁的理解:#1、公平锁、非公平锁 公平锁:eg: ReentrantLock 关键词:先来先服务。 加锁前检查是否有排队等锁的线程,若有,当前线程参与排队,先排的线程优先获取锁。相对没有 非公平锁 效率高。 非公平锁:eg:Synchronized ReentrantLock 与公平锁相反,不考虑排队问题,一旦资源释放,不考虑线程先来还...原创 2019-07-26 13:15:00 · 174 阅读 · 0 评论