java并发
文章平均质量分 67
andylau223
这个作者很懒,什么都没留下…
展开
-
10-JUC-Future and Callable
Future and Callable1. Runnable的缺陷2.Callable接口3. Future类4. 用法1: 线程池的submit方法返回Future对象5. 用法2: 用FutureTask来创建Future6.Future的注意点1. Runnable的缺陷不能返回一个返回值不能抛出异常2.Callable接口3. Future类4. 用法1: 线程池的submit方法返回Future对象/** * @Classname OneFuture * @Des原创 2021-03-01 21:53:30 · 92 阅读 · 0 评论 -
09-JUC-AQS
AQS1. 学习AQS的思路2. 为什么需要AQS3. AQS的作用4. AQS的重要性、地位5.AQS内部原理解析state控制线程抢锁和配合的FIFO队列期望协作工具类实现的获取/释放等重要方法6.应用实例、源码解析AQS的用法7.利用AQS实现一个简单的Latch1. 学习AQS的思路学习AQS的目的主要是想理解原理、提高技术、以及应对面试。2. 为什么需要AQS3. AQS的作用4. AQS的重要性、地位5.AQS内部原理解析state控制线程抢锁和配合的FIFO队原创 2021-03-01 15:44:13 · 107 阅读 · 0 评论 -
08-JUC--并发流程
线程协作1.什么是控制并发流程2.CountDownLatchCountDownLatch的作用CountDownLatch的主要方法3.Semaphore主要方法介绍注意点4. Condition接口(条件对象)4.1 作用4.2 代码演示4.3 注意点5.CyclicBarrier1.什么是控制并发流程2.CountDownLatchCountDownLatch的作用CountDownLatch的主要方法/** * @Classname CountDownLatchDemo01原创 2021-02-26 16:36:19 · 75 阅读 · 0 评论 -
07-JUC--并发容器
并发容器概览ConcurrentHashMap;线程安全的HashMapCopyOnWriteArrayList:线程安全的ListBlockingQueue:这是一个接口,表示阻塞队列,非常适用于作为数据共享的通道。ConcurrentLinkedQueue:高效的非阻塞并发队列,使用链表实现。可以看做一个线程安全的LinkedListConcurrentSkipListMap:是一个Map,使用跳表的数据结构进行快速查找。集合类的历史Vector和Hashtable使用了synchron原创 2021-02-26 14:43:36 · 156 阅读 · 0 评论 -
05-Thread-java并发的其他基础知识
java中的线程安全问题共享资源,就是说该资源被多个线程所持有或者说多个线程都可以去访问该资源。线程安全问题是指当多个线程同时读写一个共享资源并且没有任何同步措施时,导致出现脏数据或者其他不可预见的结果的问题,脏数据(Dirty Read)是指源系统中的数据不在给定的范围内或对于实际业务毫无意义,或是数据格式非法,以及在源系统中存在不规范的编码和含糊的业务逻辑。java中共享变量的内存可见性问题Java内存模型规定,将所有的变量都存放在主内存中,当线程使用变量时,会把主内存里面的变量复制到自己的原创 2021-02-22 18:06:17 · 73 阅读 · 0 评论 -
04-Thread--java并发编程基础
Join方法/** * @Auther: match * @Date: 2021/2/22 12:21 * @Description: */public class JoinDemo { public static void main(String[] args) throws InterruptedException { Task1 task1 = new Task1(); Task2 task2 = new Task2(); Thre原创 2021-02-22 12:36:33 · 90 阅读 · 0 评论 -
03-Thread--中断机制
java中的中断机制阅读素材一:https://www.cnblogs.com/hapjin/p/5450779.html阅读素材二:https://www.ibm.com/developerworks/cn/java/j-jtp05236.html转载 2021-02-20 18:01:58 · 78 阅读 · 0 评论 -
02-Thread--基础线程机制
基础线程机制Executor守护线程 Daemowait , sleep , yieldExecutorExecutor 管理者线程的生命周期,提供了多个方法供我们使用。Executor的继承体系ThreadPoolExecutor实现的顶层接口是Executor,顶层接口Executor提供了一种思想:将任务提交和任务执行进行解耦。用户无需关注如何创建线程,如何调度线程来执行任务,用户只需提供Runnable对象,将任务的运行逻辑提交到执行器(Executor)中,由Executor框架完成线程原创 2021-02-20 17:34:12 · 110 阅读 · 0 评论 -
01Thread--使用线程的三种方式
使用线程的三种方式实现Runnable接口实现Callable接口继承Thread类实现 Runnable接口和 Callable接口相当于创建了一个可以在线程中运行的任务;创建任务后还需要Thread来驱动。Runnable需要实现接口中的 run(), 在方法内编写需要执行的任务/** * @Auther: match * @Date: 2021/2/20 16:25 * @Description: 演示Runnable接口的简单使用 */public class Runna原创 2021-02-20 16:42:17 · 102 阅读 · 0 评论 -
07-JUC--Concurrent Container
并发容器 ConcurrentHashMap、CopyOnWriteArrayList、阻塞队列原创 2021-02-18 20:36:16 · 79 阅读 · 0 评论 -
06-JUC--Immutable
什么是不变性(Immutable)如果对象在被创建后,状态就不能被修改,那么它就是不可变的。具有不变性的对象一定是线程安全的,我们不需要对其采取任何额外的安全措施,也能保证线程安全。代码演示/** * @Classname Person * @Description 不可变对象,演示其他类无法修改这个对象。 * @Date 2021/2/18 17:12 * @Created by YoungLiu */public class Person { //加了final原创 2021-02-18 20:32:46 · 98 阅读 · 1 评论 -
05-JUC--CAS
什么是CAS? compare and swap参考博文: https://objcoding.com/2018/11/29/cas/CAS的等价代码/** * @Classname SimulatedCAS * @Description 模拟CAS操作,java实验CAS基本思想 * @Date 2021/2/18 15:13 * @Created by YoungLiu */public class TwoThreadsCompetition implements Runnable{原创 2021-02-18 15:36:09 · 87 阅读 · 0 评论 -
04-JUC--atomic
Atomic什么是原子类?有什么用?6类原子类纵览AtomicInteger常用方法代码演示1AtomicArray代码演示AtomicReference引用类型原子类代码演示把普通变量升级为具有原子功能代码演示什么是原子类?有什么用?不可分割一个操作是不可分割的,即使在多线程环境下也是不可分割的。在java中 java.util.concurrent.atomic 用于保证并发安全原子类的作用和锁类似,是为了保证并发情况下的线程安全。不过原子类相比于锁,有一定的优势。4.1 粒度更细:原子原创 2021-02-18 14:20:43 · 267 阅读 · 3 评论 -
03-JUC-Lock
Lock一级目录二级目录三级目录Lock接口为什么需要Lock?Lock的主要接口![在这里插入图片描述](https://img-blog.csdnimg.cn/20210217132633625.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNzI5Mjg3,size_16,color_FFFFFF,t_70)lock()代码演示t原创 2021-02-17 13:53:27 · 241 阅读 · 3 评论 -
02-JUC--ThreadLocal
ThreadLocal一级目录二级目录三级目录ThreadLocal的用途场景1:每个线程都需要一个独享的对象一级目录二级目录三级目录ThreadLocal的用途场景1:每个线程都需要一个独享的对象public class ThreadLocalNormalUsage00 { public static void main(String[] args) { new Thread(new Runnable() { @Override原创 2021-02-17 10:00:06 · 147 阅读 · 0 评论 -
01-JUC--ThreadPool
线程池简介这篇文章写的好。放个连接,是一个非常好的阅读材料。美团技术团队:https://tech.meituan.com/2020/04/02/java-pooling-pratice-in-meituan.html线程池(Thread Pool)是一种基于池化思想管理线程的工具,经常出现在多线程服务器中,如MySQL。线程池的重要性如果不使用线程池,每个任务都新开一个线程处理。1.一个线程2.for循环创建线程3.1000个线程 这种方式开销太大,我们希望有固定数量的线程,来执行这个10原创 2021-02-16 12:19:59 · 241 阅读 · 2 评论