自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java并发编程之Condition

引言在java中,对于任意一个java对象,它都拥有一组定义在java.lang.Object上监视器方法,包括wait(),wait(long timeout),notify(),notifyAll(),这些方法配合synchronized关键字一起使用可以实现等待/通知模式。同样,Condition接口也提供了类似Object监视器的方法,通过与Lock配合来实现等待/通知模式。为了更好的了解C

2016-12-30 16:51:12 464

原创 java并发编程之LockSupport

LockSupport,构建同步组件的基础工具,帮AQS完成相应线程的阻塞或者唤醒的工作。LockSupport源码分析LockSupport定义了一组以park开头的方法来阻塞当前线程,unpark来唤醒被阻塞的线程。阻塞线程park()实现public static void park() { UNSAFE.park(false, 0L);}调用native方法阻塞当前线程。pa

2016-12-29 16:32:01 579 1

原创 java中的读写锁

引言锁(Lock)是java一个很重要的同步组件,Lock提供了跟synchronized关键字一样的功能,相比synchronized更加灵活,但是实现也更加复杂。锁的分类: 锁主要分为排他锁和读写锁。排他锁:在同一时刻只允许一个线程进行访问,其他线程等待;读写锁:在同一时刻允许多个读线程访问,但是当写线程访问,所有的写线程和读线程均被阻塞。读写锁维护了一个读锁加一个写锁,通过读写锁分离的模

2016-12-27 00:06:42 590

原创 java并发编程之AbstractQueuedSynchronizer

引言AbstractQueuedSynchronizer,队列同步器,简称AQS,它是java并发用来构建锁或者其他同步组件的基础框架。一般使用AQS的主要方式是继承,子类通过实现它提供的抽象方法来管理同步状态,主要管理的方式是通过tryAcquire和tryRelease类似的方法来操作状态,同时,AQS提供以下线程安全的方法来对状态进行操作:protected final int getStat

2016-12-15 15:58:14 564

原创 ThreadPoolExecutor源码分析

引言为什么引入线程池技术?对于服务端的程序,经常面对的是执行时间较短、工作内容较为单一的任务,需要服务端快速处理并返回接口。假若服务端每次接收到一个任务,就创建一个线程,然后执行,这种方式在原型阶段是不错的选择,但是面对成千上万的任务提交进服务器时,这个时候将会创建数以万记的线程,这很明显不是一个好的选择。为什么呢? - 第一,频繁的线程切换会使操作系统频繁的进行上下文切换,增加了系统的负载;

2016-12-13 10:51:38 2540

原创 ThreadLocal源码解析

引言ThreadLocal,线程变量,线程可以将本次线程内经常使用的变量存储到ThreadLocal中,方便本次线程内其他的操作使用。注:特别需要注意的是,有些博客说ThreadLocal可以保证线程安全,这是错误的认识,ThreadLocal存储的只是每一个线程的本地变量,并未涉及到临界区,不能保证线程安全。在使用的时候一定要注意使用场景,ThreadLocal存储的应该是每个线程内部共享的一些数

2016-12-08 14:58:04 616

原创 Thread源码解析

引言在介绍Thread源码之前先简要介绍一下线程相关的一些基础知识。线程定义线程是现代操作系统调度的最小单元,一个进程可以创建多个线程来提高系统的吞吐量和执行效率。注:进程是操作系统资源分配和调度的基本单位,它可以创建多个线程,进程可创建的线程数量跟操作系统相关。为什么要使用多线程?更多的处理器核心;更快的响应时间;更好的编程模型:java提供了一套完整的jmm规则,屏蔽了底层的一些操作,开发

2016-12-07 19:19:19 982

原创 ReentrantLock源码解析

引言相信接触过java并发编程的对锁都不陌生,reentrantLock是锁的一种,可重入锁,本文将给出ReentrantLock的具体使用和相关源码分析。先看具体的使用吧:public class ReentrantLockTest { private static int number = 0; ReentrantLock reentrantLock = new ReentrantL

2016-12-01 15:20:26 547

空空如也

空空如也

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

TA关注的人

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