当一个线程执行的代码出现异常时,其所持有的锁会自动释放 public class MyObject { private int i = 1; synchronized public void methodA() thro…
分类:java并发
Java偏向锁实现原理(Biased Locking)
http://kenwublog.com/theory-of-java-biased-locking 阅读本文的读者,需要对Java轻量级锁有一定的了解,知道lock record, mark word之类…
JAVA线程池学习,ThreadPoolTaskExecutor和ThreadPoolExecutor有何区别?
初学者很容易看错,如果没有看到spring或者JUC源码的人肯定是不太了解的。 ThreadPoolTaskExecutor是spring core包中的,而ThreadPoolExecutor是JDK中的JUC。Thr…
【Java多线程系列七】ExecutorService
java.util.concurrent.ExecutorService接口提供了许多线程管理的方法 Method 说明 shutdown 拒绝接收新的任务,待已提交的任务执行后关闭,且宿主线程不阻塞,若需要阻塞可借助a…
java中 ExecutorService,Executor,ThreadPoolExecutor的用法
package com; import java.util.concurrent.BlockingQueue; import java.util.concurrent.Executor; import java.util…
【JAVA多线程中的锁机制】
JAVA中的每个对象都可以用作一个实现同步的锁,这种称为内置锁,内置锁是可重入的,因此如果某个线程试图获取一个已经由它自己持有的锁,那么这个请求就会成功。 重入的实现方法是,为每个锁关联一个获取计数值和一个所有者线程…
Java并发编程:自己动手写一把可重入锁
关于线程安全的例子,我前面的文章Java并发编程:线程安全和ThreadLocal里面提到了,简而言之就是多个线程在同时访问或修改公共资源的时候,由于不同线程抢占公共资源而导致的结果不确定性,就是在并发编程中经常要考…
java多线程之 ---- 线程死锁
java多线程之线程死锁 产生死锁的主要原因: 由于系统资源不足。 进程执行推进的顺序不合适。 资源分配不当等。 假设系统资源充足。进程的资源请求都可以得到满足,死锁出现的可能性就非常…
Java知多少(64)线程死锁
需要避免的与多任务处理有关的特殊错误类型是死锁(deadlock)。死锁发生在当两个线程对一对同步对象有循环依赖关系时。例如,假定一个线程进入了对象X的管程而另一个线程进入了对象Y的管程。如果X的线程试图调用Y的同步方法…
JUC-8.Condition线程通信
1. 线程通信 上节讲的虚假唤醒,使用的是内置锁synchronized,那么我们使用同步锁(显示锁)Lock其实也一样达到效果。 我们知道,内置锁通过wait()notify()notifyAll()进行线程间通信。同…
Jdk1.6 JUC源码解析(19)-ScheduledThreadPoolExecutor
Jdk1.6 JUC源码解析(19)-ScheduledThreadPoolExecutor 作者:大飞 功能简介: ScheduledThreadPoolExecutor是一种类似Timer的定时器或者说…
Jdk1.6 JUC源码解析(18)-DelayQueue
Jdk1.6 JUC源码解析(18)-DelayQueue 作者:大飞 功能简介: DelayQueue是一种无界的阻塞队列,队列里只允许放入可以”延期”的元素,队列中列头的元素是最…