思路是创建两个字符串a和b,再创建两个线程A和B,让每个线程都用synchronized锁住字符串(A先锁a,再去锁b;B先锁b,再锁a),如果A锁住a,B锁住b,A就没办法锁住b,B也没办法锁住a,这时就陷入了死锁。直…
分类:java并发
Java死锁的理解
我们有时候操作数据库的时候会遇到死锁,那么什么使死锁呢?它的一个比较官方的定义就是:死锁是指两个或两个以上的进程在执行过程中,由于竞争…
JAVA多线程机制之死锁
同步特性使用起来非常方便,功能很强大。但有的时候考虑不周的话有可能出现线程死锁。死锁主要是多个线程争抢资源造成的。 下面通过一个例子演示死锁: class Resource { private int res = 0; …
浅谈 Java 多线程环境下 如何跟踪死锁 (例子)
1)源代码如下: package ThreadDeadLockTrial; import java.util.*; class Thread1 extends Thre…
JUC组件扩展(二)-JAVA并行框架Fork/Join(四):监控Fork/Join池
Fork/Join 框架是为了解决可以使用 divide 和 conquer 技术,使用 fork() 和 join() 操作把任务分成小块的问题而设计的。主要实现这个行为的是 ForkJoinPool 类。 本篇介绍从…
【死磕Java并发】----- 死磕 Java 并发精品合集
【死磕 Java 并发】系列是 LZ 在 2017 年写的第一个死磕系列,一直没有做一个合集,这篇博客则是将整个系列做一个概览。 先来一个总览图: 【高清图,请关注“Java技术驿站”公众号,回复:脑图JUC】 【死磕J…
【总结】Java面试题
部分转自 https://blog.csdn.net/junchi_/article/details/79754032 一、String特性。StringBuffer 和 StringBuilder 区别 问:…
JAVA 锁之 Synchronied
■ Java 锁 1. 锁的内存语义 锁可以让临界区互斥执行,还可以让释放锁的线程向同一个锁的线程发送消息 锁的释放要遵循 Happens-before 原则(锁规则:解锁必然发生在随后的加锁之前…
JUC原子类 Atomic***** 使用
一、Atomic简介 Atomic包是Java.util.concurrent下的另一个专门为线程安全设计的Java包,包含多个原子操作类。这个包里面提供了一组原子变量类。其基本的特性就是在多线程环境下,当有多个线程同时…
大数据处理系列之(一)Java线程池使用
前言:最近在做分布式海量数据处理项目,使用到了java的线程池,所以搜集了一些资料对它的使用做了一下总结和探究, 前面介绍的东西大多都是从网上搜集整理而来。文中最核心的东西在于后面两节无界队列线程池和有界队列线程池的实例…
java多线程 ThreadPoolExecutor 策略的坑
无论是使用jdk的线程池ThreadPoolExecutor 还是spring的线程池ThreadPoolTaskExecutor 都会使用到一个阻塞队列来进行存储线程任务。 &n…
java线程池的原理学习(三)
接上文:java线程池的原理学习(二) ThreadPoolExecutor深入剖析 线程池的五种状态 ThreadPoolExecutor 类中将线程状态( runState)分为了以下五种: RUNNING:可以接受…