Java 中的锁

对象锁和类锁实例锁直接使用 synchronize(this),或者直接把synchronize 加在方法上,在这种方式属于对象锁,只能锁住同一个对象的实例。如果new了多个对象,这种方式就没用了类锁synchronize加在静态方法,或者synchronize块使用静态变量或者类名称做为锁,类信息是存在 JVM 方法区的,并且整个 JVM 只有一份,方法区又是所有线程共享的,所以类锁是所有线程共

- 阅读全文 -

Java并发事务问题

场景代码片段,查询是否有用户“小明”,没有则插入。模拟10个线程并发执行。@GetMapping("/test") public void test() { for (int i = 0; i < 10; i++) { new Thread(() -> { testService.save(); }).

- 阅读全文 -

Docker使用详解

安装Docker,并设置Docker仓库为阿里云yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum install -y docker-

- 阅读全文 -

Java进程死循环,CPU 100%怎么排查?

Java程序出现bug陷入死循环,Linux服务器Cpu飙升到100%,如何才能快速定位到Java程序的某一行?其实Java虚拟机自带了堆栈跟踪工具 -- jstack,我们可以利用他很好的排查为了制造陷入死循环的bug,先准备一个api,只要请求/test?count={} 就能拉高cpu@RequestMapping("/test") public long test(lo

- 阅读全文 -

Spring 事务详解

不管是在工作中,还是在面试时,经常会被 Spring 事务管理的各种问题绕晕,什么事务的传播机制、事务的隔离级别、事务的嵌套等等,大多数人 Spring 事务的理解都仅仅知道是基于AOP的动态代理,一个@Transaction 注解走天下。今天抽空把 Spring 的事务理清楚,将来不管是面试,还是写代码,都会有所帮助。啥叫事务呢?就是一组操作全部成功或者全部失败嘛,成功了commit,失败了ro

- 阅读全文 -