自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 Java并发编程之旅总览

线程安全的概念 什么时候线程不安全?怎样做到线程安全?怎么扩展线程安全的类? java对线程安全的支持 java 对线程安全支持有哪些? java 中的线程池 Executors的使用与ThreadPoolExecutor java中线程池的生命周期与线程中断 java 中的锁 Java中常见死锁与活锁的实例 synchronize - 线程同步机制 显示锁ReentrantLock使用...

2018-11-25 17:10:26 115

原创 AbstractQueuedSynchronizer原理剖析

无论是公平锁还是非公平锁,它们的实现都依赖于AbstractQueuedSynchronizer,它提供了一个基于先进先出等待队列 实现block locks和synchronizers的框架。特性如下 仅通过一个 int 类型来代表状态。对于ReentrantLock而言,他就是线程持有锁的次数,当次数为0时,代表锁没有被持有,正数代表被持有的次数,负数则是超出了锁的持有范围,有可能存在死循环...

2018-11-25 16:33:43 592

原创 Java中的显示锁ReentrantLock使用与原理

考虑一个场景,轮流打印0-100以内的技术和偶数。通过使用 synchronize 的 wait,notify机制就可以实现,核心思路如下: 使用两个线程,一个打印奇数,一个打印偶数。这两个线程会共享一个数据,数据每次自增,当打印奇数的线程发现当前要打印的数字不是奇数时,执行等待,否则打印奇数,并将数字自增1,对于打印偶数的线程也是如此 //打印奇数的线程 private static class...

2018-11-25 16:20:09 508

原创 java synchronize - 线程同步机制

Java支持同步机制的是Monitor。Monitor就像是拥有一个特殊房间的建筑,在同一时间里,这间特殊的房间只能被一个线程拥有。 enter the monitor:进入这幢建筑 acquiring the monitor:进入建筑里的特殊房间 owning the monitor:拥有特殊房间的所有权 releasing the monitor:离开特殊的房间 exiting the mo...

2018-11-25 16:08:51 839

原创 Java中常见死锁与活锁的实例

顺序死锁:过度加锁,导致由于执行顺序的原因,互相持有对方正在等待的锁 资源死锁:多个线程在相同的资源上发生等待 由于调用顺序而产生的死锁 public class Test { Object leftLock = new Object(); Object rightLock = new Object(); public static void main(String[]...

2018-11-25 16:02:08 2527 2

原创 java中线程池的生命周期与线程中断

线程池生命周期包括: RUNNING:接收新的任务并处理队列中的任务 SHUTDOWN:不接收新的任务,但是处理队列中的任务 STOP:不接收新的任务,不处理队列中的任务,同时中断处理中的任务 TIDYING:所有的任务处理完成,有效的线程数是0 TERMINATED:terminated()方法执行完毕 转换成TIDYING状态的线程会运行terminated方法。执行完terminate...

2018-11-25 15:53:42 1060

原创 java中的Executors简介与多线程在网站上逐步优化的运用案例

提供Executor的工厂类 忽略了自定义的ThreadFactory、callable和unconfigurable相关的方法 newFixedxxx:在任意时刻,最多有nThreads个线程在处理task;如果所有线程都在运行时来了新的任务,它会被扔入队列;如果有线程在执行期间因某种原因终止了运行,如果需要执行后续任务,新的线程将取代它 return new ThreadPoo...

2018-11-25 15:38:29 183

原创 java 对线程安全支持有哪些?

同步容器。它的原理是将状态封装起来,并对每个公有方法都实行同步,使得每次只有1个线程能够访问容器的状态。 Vector和HashTable Collections.synchronizedXXX方法 同步容器的问题 这种方式使得对容器的访问都串行化,严重降低了并发性,如果多个线程来竞争容器的锁时,吞吐量严重降低 对容器的多个方法的复合操作,是线程不安全的,比如一个线程负责删除,另一个线...

2018-11-25 15:05:52 284

原创 什么时候线程不安全?怎样做到线程安全?怎么扩展线程安全的类?

当多个线程去访问某个类时,如果类会表现出我们预期出现的行为,那么可以称这个类是线程安全的。 什么时候会出现线程不安全? 操作并非原子。多个线程执行某段代码,如果这段代码产生的结果受不同线程之间的执行时序影响,而产生非预期的结果,即发生了竞态条件,就会出现线程不安全; 常见场景: count++。它本身包含三个操作,读取、修改、写入,多线程时,由于线程执行的时序不同,有可能导致两个线程执行后...

2018-11-25 11:25:12 655

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除