多线程
光影和弦 一抹春色
这个作者很懒,什么都没留下…
展开
-
多线程基础之AQS
一 AQS:是抽象的队列式的同步器内部定义了很多锁相关的方法,我们熟知的ReentrantLock、ReentrantReadWriteLock、CountDownLatch、Semaphore等都是基于AQS来实现的。我们先看下AQS相关的UML图:1AQS实现原理AQS中 维护了一个volatile int state(代表共享资源)和一个FIFO线程等待队列(多线程争用资源被阻塞时会进入此队列)。这里volatile能够保证多线程下的可见性,当state=1则代表当前对象锁已经被占有,原创 2020-05-17 17:15:23 · 288 阅读 · 0 评论 -
JAVA并发系列之ThreadLocal
ThreadLocal是什么首先说明,ThreadLocal与线程同步无关。ThreadLocal虽然提供了一种解决多线程环境下成员变量的问题,但是它并不是解决多线程共享变量的问题。ThreadLocal类提供了一种线程局部变量(ThreadLocal),即每一个线程都会保存一份变量副本,每个线程都可以独立地修改自己的变量副本,而不会影响到其他线程,是一种线程隔离的思想。实现原理Threa...原创 2020-04-26 22:37:33 · 183 阅读 · 0 评论 -
线程生命周期
一 线程生命周期二 线程生命周期的集中状态操作系统通用线程状态和编程语言封装后的线程状态操作系统通用线程状态除去生【初始状态】死【终止状态】,其实只是三种状态的各种转换,听到这句话是不是心情放松了很多呢?为了更好的说明通用线程状态和 Java 语言中的线程状态,这里还是先对前者进行简短的说明初始状态线程已被创建,但是还不被允许分配CPU执行。注意,这个被创建其实是属于编程语言层面...原创 2020-04-15 17:52:30 · 154 阅读 · 0 评论 -
深入分析线程池的实现原理
一.概述线程池,顾名思义就是存放线程的池子,池子里存放了很多可以复用的线程。如果不用类似线程池的容器,每当我们需要执行用户任务的时候都去创建新的线程,任务执行完之后线程就被回收了,这样频繁地创建和销毁线程会浪费大量的系统资源。因此,线程池通过线程复用机制,并对线程进行统一管理,具有以下优点:降低系统资源消耗。通过复用已存在的线程,降低线程创建和销毁造成的消耗;提高响应速度。当有任务到达时...原创 2020-04-11 22:49:45 · 201 阅读 · 0 评论 -
ReentrantLock原理及AQS(羊群效应+实操)
一1.1 悲观锁和乐观锁悲观锁:还是像它的名字一样,对于并发间操作产生的线程安全问题持悲观状态,悲观锁认为竞争总是会发生,因此每次对某资源进行操作时,都会持有一个独占的锁,就像synchronized,不管三七二十一,直接上了锁就操作资源了。乐观锁:就像它的名字一样,对于并发间操作产生的线程安全问题持乐观状态,乐观锁认为竞争不总是会发生,因此它不需要持有锁,将比较-替换这两个动作作为一个原子...原创 2020-04-05 00:43:56 · 420 阅读 · 0 评论 -
多线程(基础实操篇)
线程创建的方式进程:进程指正在运行的程序。确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能。多线程(Thread、线程创建、线程池)第1章 多线程1.1 多线程介绍学习多线程之前,我们先要了解几个关于多线程有关的概念。进程:进程指正在运行的程序。确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一...原创 2020-04-02 21:34:10 · 430 阅读 · 0 评论