前言 在我们进行开发的时候,为了充分利用系统资源,我们通常会进行多线程开发,实现起来非常简单,需要使用线程的时候就去创建一个线程(继承Thread类、实现Runnable接口、使用Callable和Future),但…
分类:java并发
Java中死锁的定位与修复
死锁应该可以说是并发编程中比较常见的一种情况,可以说如果程序产生了死锁那将会对程序带来致命的影响;所以排查定位、修复死锁至关重要; 我们都知道死锁是由于多个对象或多个线程之间相互需要对方锁持有的锁而又没有释放对方所持…
Java同步—线程锁和条件对象
线程锁和条件对象 在大多数多线程应用中,都是两个及以上线程需要共享对同一数据的存取,所以有可能出现两个线程同时访问同一个资源的情况,这种情况叫做:竞争条件。 在Java中为了解决并发的数据访问问题,一般使用锁这个概念来解…
Java 可重入锁
一般意义上的可重入锁就是ReentrantLock http://www.cnblogs.com/hongdada/p/6057370.html 广义上的可重入锁是指: 可重入锁,也叫做递归锁,指的是同一线程 外层函数获…
Java虚拟机工具之堆栈跟踪工具jstack检测死锁
jstack是一个很实用的工具,不仅能定位到死循环的位置,还能找到死锁的位置,这个工具对我们直接在生产机上定位错误带来了极大的方便,尤其是那些不容易复现的错误。 首先呢,先写一个能产生死锁的代码。代码逻辑很简单,咱就产生…
Java对象锁的理解
Java 以前理解Java的锁机制认为:锁的类型分为‘类锁’,’方法锁‘,’对象锁‘。 1.类锁(synchronize(静态对象)):类的所有对象都要竞争锁。 2.方法锁(在方法前加synchronize): 同一对象…
Thinking in java 之并发其五:强大的 JUC 包
一、前言 java 的 java.util.concurrent 是 java 用于提供一些并发程序所需功能的类包。它的功能全面且强大,在前面,我们已经使用过原子基本变量,BlockingQueue 等类。现在,我们需要…
Java 集合系列10之 HashMap详细介绍(源码解析)和使用示例
概要 这一章,我们对HashMap进行学习。我们先对HashMap有个整体认识,然后再学习它的源码,最后再通过实例来学会使用HashMap。内容包括:第1部分 HashMap介绍第2部分 HashMap数据…
spring对java线程池封装源码解析
spring的 ThreadPoolTaskExecutor类最终是通过调用java 的ThreadPoolExecutor的void execute(Runnable task)方法或Future<?&…
死锁原因及解决、避免办法
死锁的条件互斥条件(Mutual exclusion) :资源不能被共享,只能由一个进程使用。请求与保持条件(Hold and wait):进程已获得了一些资源,但因请求其它资源被阻塞时,对已获得的资源保持不放。不可抢占…
Java 锁的种类
上一篇既然提到了锁,这一篇来详细介绍JAVA中的锁,也为之后JUC下的锁做一个铺垫 其实如果按照名称来说,锁大概有以下名词: 自旋锁 ,自旋锁的其他种类,阻塞锁,可重入锁 ,读写锁 ,互斥锁 ,悲观锁 ,乐观锁 ,公平锁…
java中线程同步Synchronized,监视器monitor和锁lock的关系是什
既然有关监视器monitor的概念比较难,大家怎么解释的都有。首先我给出一下java的官方文档,也是最权威的解释: Synchronizationis built around an internal entity kn…