
并发编程
文章平均质量分 78
cc_南柯一梦
奔跑在还债路上的老码农。技术债~-~
展开
-
并发08:ThreadLocal
一、简介:Threadlocal 是一个线程内部的存储类,可以在指定线程内存储数据,数据存储以后,只有指定线程可以得到存储数据二、使用场景场景1,ThreadLocal 用作保存每个线程独享的对象,为每个线程都创建一个副本,这样每个线程都可以修改自己所拥有的副本, 而不会影响其他线程的副本,确保了线程安全。场景2,ThreadLocal 用作每个线程内需要独立保存信息,以便供其他方法更方便地获取该信息的场景。每个线程获取到的信息可能都是不一样的...原创 2021-09-05 17:55:24 · 149 阅读 · 0 评论 -
并发07:阻塞队列
一:什么是阻塞队列 阻塞队列,也就是 BlockingQueue,它是一个接口。BlockingQueue 继承了 Queue 接口,是队列的一种。BlockingQueue 是线程安全的。 阻塞队列 BlockingQueue 主要实现分别为ArrayBlockingQueue、LinkedBlockingQueue、SynchronousQueue、DelayQueue、PriorityBlockingQueue 和 LinkedTransferQueue...原创 2021-09-05 16:25:45 · 112 阅读 · 0 评论 -
并发06:Java容器(含基础集合及并发容器)
关系图:一、基本概念 分为两个 1、Collection 一个独立的元素序列。其中 List 按插入顺序保存元素,是有序的。Set 是无序的,不能重复。Queue 按照排队规则来确定的产生顺序 常用方法:方法 功能描述 add(E e) 将指定的对象添加到该集合中 rome(Object o) 将指定的对象从该集合中移除 isEmpty() 判断当前集合是否为空 ...原创 2021-09-05 14:00:37 · 154 阅读 · 1 评论 -
并发05:锁
一:锁的分类及特点 1:偏向锁/轻量级锁/重量级锁; 2:可重入锁/非可重入锁; 3:共享锁/独占锁; 4:公平锁/非公平锁; 5:悲观锁/乐观锁; 6:自旋锁/非自旋锁; 7:可中断锁/不可中断锁。偏向锁/轻量级锁/重量级锁这三种锁特指 synchronized 锁的状态,通过在对象头中的 mark word 来表明锁的状态。 ...原创 2021-09-04 15:38:15 · 278 阅读 · 0 评论 -
并发04:CAS
一:CAS简介 CAS 英文全称是 Compare-And-Swap,中文叫做“比较并交换”,它是一种思想、一种算法。 思路:CAS 有三个操作数:内存值 V、预期值 A、要修改的值 B。CAS 最核心的思路就是,仅当预期值 A 和当前的内存值 V 相同时,才将内存值修改为 B。核心思想是通过将内存中的值与指定数据进行比较,当这两个数值一样时,才将内存中的数据替换为新的值,整个过程是具备原子性的。二:CAS 的应用场景1、并发容...原创 2021-09-04 12:10:57 · 118 阅读 · 0 评论 -
并发03:线程池
一:使用线程池的好处 1、线程池可以解决线程生命周期中的系统开销问题,可以加快响应速度,因为线程池中的线程是可以复用的。 2、线程池可以统筹内存和 CPU 的使用,避免资源使用不当。线程池会根据配置和任务数量灵活的控制线程数量,不够的时候就创建,太多的时候就回收,避免线程过多导致内存溢出。或线程太少导致 CPU 资源浪费, 达到一个完美的平衡。 3、线程池可以统一管理资源。比如线程池可以统一管理任务队列和线程,可以统一开始或结束任务比单个线程逐一处理任务...原创 2021-09-04 11:09:11 · 164 阅读 · 0 评论 -
并发2:线程间的通信方式
1、同步 这里同步是指线程通过synchronized关键字这种方式实现线程间的通信 示例:public class MyObject { synchronized public void methodA() { //do something.... } synchronized public void methodB() { //do some other thing }}public ...原创 2021-09-02 22:27:28 · 94 阅读 · 0 评论 -
并发01:线程实现方式及线程基础
1、面试题:实现线程的方式有几种? 最常见描述为两种,一种为实现 Runnable 接口,另一种为继承 Thread 类。也有说3种、4种等等。但本质是一种方式 首先我们先说最常说的两种实现方式 实现 Runnable 接口通过实现 Runnable 接口实现多线程,如代码所示,首先通过 RunnableThread 类实现 Runnable 接口,然后重写 run() 方法,之后只需要把这个实现了 run() 方法的实例传到 Thr...原创 2021-08-07 01:06:14 · 118 阅读 · 0 评论