Java-多线程与锁
文章平均质量分 92
介绍java并发的相关知识
keep_trying_gogo
千万不要在最能吃苦的年纪选择安逸,与君共勉。
展开
-
Java 线程
一、什么是线程线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(use原创 2017-12-15 11:02:53 · 306 阅读 · 0 评论 -
Java线程池--ThreadPoolExecutor
一线程池简介 二ThreadPoolExecutor简介 三ThreadPoolExecutor类图 四ThreadPoolExecutor主要属性 五线程池使用示例 六线程池调度过程 七线程池的状态 八线程池拒绝策略 线程池拒绝策略简介 拒绝策略案例 九源码分析 A创建并初始化线程池 ThreadPoolExecutor ExecutorsdefaultThreadFactory defau原创 2018-01-10 18:19:04 · 511 阅读 · 0 评论 -
Java synchronized关键字
一、多线程给编码带来的影响下面我们看一段代码,这段代码的含义是模拟现实生活中的购票:/** * * 类描述 * Copyright © 2017永乐科技. All rights reserved. * <p>@Title: ThreadTicket.java <p> * <p>@Package: demo.com.test.thread <p> * <p>@author: keep_t原创 2017-12-15 18:01:00 · 297 阅读 · 0 评论 -
Java-JUC包中的锁-概述(一)
根据锁的添加到Java中的时间,Java中的锁,可以分为”同步锁”和”JUC包中的锁”。一、同步锁 即通过synchronized关键字来进行同步,实现对竞争资源的互斥访问的锁。Java 1.0版本中就已经支持同步锁了。 同步锁的原理是,对于每一个对象,有且仅有一个同步锁;不同的线程能共同访问该同步锁。但是,在同一个时间点,该同步锁能且只能被一个线程获取到。这样,获取到同步锁的线程就能进行C原创 2017-12-31 14:12:06 · 2654 阅读 · 0 评论 -
Java-JUC包中的锁-ReentrantLock(二)
一、ReentrantLock的UML类图 二、ReentrantLock介绍 三、ReentrantLock构造函数 构造函数 FairSync NonfairSync 三、基本概念 四、获取非公平锁的流程 五、获取公平锁的流程 一、tryAcquire() 1. tryAcquire() 2.hasQueuedPredecessors() 3. Node的源码 4. compareAn...原创 2017-12-31 14:20:24 · 621 阅读 · 0 评论 -
Java-JUC包中的锁-CLH(三)
一、CLH锁的核心思想是将众多线程长时间对某资源的竞争,通过有序化这些线程转化为只需对前驱节点的属性上自旋检测。唯一存在竞争的地方就是在入队列之前对尾节点tail的竞争,但竞争的线程的数量已经少了很多,且比起所有线程直接对某资源竞争的轮询次数也减少了很多,节省了很多CPU缓存同步操作,大大提升系统性能,利用空间换取性能。二、CLH简介CLH是由Craig, Landin, and Hagersten原创 2018-01-01 18:44:23 · 476 阅读 · 0 评论 -
Java-JUC包中的锁-CountDownLatch(四)
一、CountDownLatch简介CountDownLatch是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。二、CountDownLatch函数列表CountDownLatch(int count) 构造一个用给定计数初始化的 CountDownLatch。 // 使当前线程在锁存器倒计数至零之前一直等待,除非线程被中断。 void await() //原创 2018-01-01 19:36:55 · 298 阅读 · 0 评论 -
Java-JUC包中的锁-CycleBrrier(五)
一、CyclicBarrier简介CyclicBarrier是一个同步辅助类,允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。二、CyclicBarrier函数列表CyclicBarrier(int parties) 创建一个新的 CyclicBarrier,它将在给定数原创 2018-01-01 20:03:25 · 594 阅读 · 0 评论 -
Java-JUC包中的锁-Semaphore(六)
一、Semaphore简介 Semaphore是一个计数信号量,它的本质是一个”共享锁”。 信号量维护了一个信号量许可集。线程可以通过调用acquire()来获取信号量的许可;当信号量中有可用的许可时,线程能获取该许可;否则线程必须等待,直到有可用的许可为止。 线程可以通过release()来释放它所持有的信号量许可。 二、Semaphore的函数列表 // 创建具有给定的许可数和非公原创 2018-01-02 17:54:37 · 246 阅读 · 0 评论