Java多线程系列--“JUC集合”08之 LinkedBlockingQueue
概要 本章介绍JUC包中的LinkedBlockingQueue。内容包括:LinkedBlockingQueue介绍LinkedBlockingQueue原理和数据结构LinkedBlockingQueue函数列表LinkedBlockingQueue源码分析(JDK1.7.0_40版本)Link...
Java多线程系列--“JUC集合”08之 LinkedBlockingQueue
Java多线程系列--“JUC集合”08之 LinkedBlockingQueue 概要 本章介绍JUC包中的LinkedBlockingQueue。内容包括:LinkedBlockingQueue介绍LinkedBlockingQueue原理和数据结构LinkedBl...
java的多线程juc
1.进程与线程: 线程:一个进程可以拥有多个并行的线程,线程是进程中一个程序执行控制的单元 进程:由cpu,data,code三部分组成,每个进程都是独立的,由系统分配,进程间的切换开销较大,进程基于操作系统; 2.并行与并发 并发:多个线程访问同一份资源 并行:在多个cpu情形下,多个线程同时运行...
Java线程(六):JUC包阻塞队列的应用
前言: 1、利用Lock 和 Condition 实现一个阻塞队列 一、阻塞队列 BlockingQueue接口 1、队列:数据的集合,先进先出。有固定大小的,也可以不固定。 2、阻塞与非阻塞:可以阻塞也可以不阻塞。 1)阻塞队列,一个指定长度的队列,如果队列满了,添加新元素的操作会被阻塞等待,...
JUC——线程同步锁(ReentrantLock)
ReentrantLock简介 ReentrantLock是一个可重复的互斥锁,又被称为独占锁,可重入的意思是:ReentrantLock锁可以被单个线程多次获取。但是在同一个时间点只能被一个线程锁持有 ReentrantLock使用一个FIFO(先进先出)的等待队里来管理获取该锁所有线程的。 ...
Java线程(四):JUC包线程互斥与同步以及读写锁
前言: 1、Java线程(一):传统线程的实现、互斥与通信 一、线程的互斥 (一)传统互斥:synchronized 关键字 1、synchronized(对象) 代码块需要锁定同一个对象,一般会锁定业务类对象,即synchronized(this)即可。 2、如静态方法互斥,则需要锁定内存中的...
Java线程(五):JUC包线程同步工具
一、线程同步工具 Semaphore 1、Semaphore 可以维护当前访问自身的线程个数,并提供了同步机制。使用 Semaphore 可以控制同时访问资源的线程个数。相当于蹲坑,一共有3个坑,10个人来,只能三个三个上,三个并发。例如,实现一个文件允许的并发访问数。 2、单个Semaphore,...
Java多线程07——JUC并发包03
1 线程的锁的synchronized、Lock、volatile区别1.1 synchronized 和 volatile 区别用法:volatile 关键字解决的是变量在多个线程之间的可见性;synchronized 关键字解决的是多个线程之间访问共享资源的同步性;多线程访问 volatile ...
Java多线程06——JUC并发包02
1 线程的同步工具类 CountDownLatchCountDownLatch 同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。CountDownLatch 类是一个同步计数器,构造时传入int参数,该参数就是计数器的初始值,每调用一次 co...
Java多线程05——JUC并发包01
1 JUC并发包JUC 即 java.util.concurrent 类的简称。主要为并发编程提供了许多通用工具类。2 线程的 ThreadLocal 本地缓存对象线程范围内的共享变量,每个线程只能访问自己的数据,而不能访问其它线程数据。每个线程调用全局 ThreadLocal 对象...
Java多线程系列--“JUC线程池”01之 线程池架构
概要前面分别介绍了"Java多线程基础"、"JUC原子类"和"JUC锁"。本章介绍JUC的最后一部分的内容——线程池。内容包括:线程池架构图线程池示例转载请注明出处:http://www.cnblogs.com/skywang12345/p/3509903.html线程池架构图线程池的架构图如下:1...
聊聊JUC包下的底层支撑类-AbstractQueuedSynchronizer(AQS)
juc包下的一堆并发工具类是我们日常开发特别是面试中常被拿来问的八股文之一,为了工作也好,为了面试也罢,今天开始想尝试着把这些给大伙描述明白,所以开始写下这篇博文,如果后续要涉及每个常用类的源码的话可能会是一个系列,计划从比较底层的AQS聊起,然后结合ReentrantLock的源码来聊AQS独占锁...
Java多线程系列--“JUC锁”04之 公平锁(二)
概要 前面一章,我们学习了“公平锁”获取锁的详细流程;这里,我们再来看看“公平锁”释放锁的过程。内容包括:参考代码释放公平锁(基于JDK1.7.0_40) “公平锁”的获取过程请参考“Java多线程系列--“JUC锁”03之 公平锁(一)”,锁的使用示例请参考“Java多线程系列--“JUC锁”02...
java并发编程(十九)----(JUC集合)总体框架介绍
本节我们将继续学习JUC包中的集合类,我们知道jdk中本身自带了一套非线程安全的集合类,我们先温习一下java集合包里面的集合类,然后系统的看一下JUC包里面的集合类到底有什么不同。java集合类java集合类里面主要包含两大类:一类是Collection接口下的List、Set和Queue接口,一...
java并发编程(七)----(JUC)ReadWriteLock
前面我们已经分析过JUC包里面的Lock锁,ReentrantLock锁和semaphore信号量机制。Lock锁实现了比synchronized更灵活的锁机制,Reentrantlock是Lock的实现类,是一种可重入锁,都是每次只有一次线程对资源进行处理;semaphore实现了多个线程同时对一...
Java多线程系列--“JUC锁”03之 公平锁(一)
概要 本章对“公平锁”的获取锁机制进行介绍(本文的公平锁指的是互斥锁的公平锁),内容包括:基本概念参考代码获取公平锁(基于JDK1.7.0_40) 一. tryAcquire() 二. addWaiter() 三. acquireQueued() 四. selfInterrupt()“公平锁...
Java之JUC系列(03)--互斥锁ReentrantLock
一、ReentrantLock基本介绍 ReentrantLock是一个可重入的互斥锁,又被称为“互斥锁”。 ReentrantLock锁(互斥锁):指在同一个时间点只能被一个线程所持有;可重入则是说ReentrantLock可以被单个线程多次获取。 ReentrantLock分为“公平锁...
Java多线程系列 JUC锁06 Condition条件
Condition介绍Condition中提供了一组类似于Object中的监视器方法。与Lock配合可以完成等待通知模式。Lock lock = new ReentrantLock();Condition condition1 = lock.newCondition();//创建和该锁关联的条件锁C...
Java并发JUC——Future和Callable
Runnable的缺陷不能返回一个返回值也不能抛出checked ExceptionCallable接口类似于Runnable,被其他线程执行的任务Callable接口中只有一个call()方法,和Runnable相比,该方法有返回值并允许抛出异常Future类Future表示一个可能还没有完成的异...
Java多线程系列--“JUC线程池”02之 线程池原理(一)
概要在上一章"Java多线程系列--“JUC线程池”01之 线程池架构"中,我们了解了线程池的架构。线程池的实现类是ThreadPoolExecutor类。本章,我们通过分析ThreadPoolExecutor类,来了解线程池的原理。内容包括:ThreadPoolExecutor简介ThreadPo...