多线程编程
文章平均质量分 93
龚礼鹏
Android应用架构师、AndroidFramework工程师、鸿蒙&openHarmony工程师、flutter开发工程师
展开
-
Java多线程及锁相关面试题
参考资料:https://blog.csdn.net/gongjdde/category_10948630.html?spm=1001.2014.3001.5482常见概念:JMM:为了明确定义在多线程场景下,什么时候可以重排序,什么时候不能重排序,Java引入了JMM(Java Memory Model),也就是Java内存模型。happen-before:这个模型就是一个规范,为了描述这个规范,JMM引入了happen-before。内存屏障:为了禁止编译器重排序和cpu重排序,在编译器原创 2022-03-28 00:46:38 · 2317 阅读 · 0 评论 -
史上最全 Java 中各种锁的介绍
转载自:https://www.jianshu.com/p/94cf9ebd8932Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。Java中往往是按照是否含有某一特性来定义锁,我们通过特性将锁进行分组归类,再使用对比的方式进行介绍,帮助大家更快捷的理解相关知识。下面给出本文内容的总体分类目录:1. 乐观锁 VS 悲观锁#乐.转载 2020-06-16 19:04:28 · 5053 阅读 · 2 评论 -
第二章 Atomic类
2.1 AtomicInteger和AtomicLongAtomicInteger和AtomicLong可以实现自增或者自减的原子操作。AtomicInteger jdk 1.8源码如下:AtomicInteger类中的方法 private static final long VALUE; //内存偏移量 static { try { VALUE = U.objectFieldOffset (At原创 2020-07-08 23:08:54 · 722 阅读 · 0 评论 -
第三章 Lock与Condition
3.1 互斥锁3.1.1 锁的可重入性:在加锁的内部可以继续加锁,lock与synchronized都支持。3.1.2 类的继承层次:3.1.3 锁的公平性与非公平性Sync是一个抽象类,它的两个子类FairSync与NofairSync分别是公平锁与非公平锁。3.1.4 锁实现的基本原理需要以下几个核心要素:①.需要一个state变量标记该锁的状态,对state变量的操作,要确保线程安全,也就是会用到CAS操作。②.需要记录当前哪个线程持有锁。③.需要底层支持对一.原创 2020-07-13 23:30:07 · 394 阅读 · 0 评论 -
android 进阶之光 第四章 多线程编程
线程基础、同步、阻塞队列、线程池、AsynTask异步任务一:线程基础1.进程与线程进程:是操作系统结构的基础,是程序在一个数据集合上的运行过程,是系统进行资源分配和调度的基本单位。线程:是操作系统调度的最小单位。2.线程的状态New:新创建状态。Runnable:可运行状态。(注意:此状态不一定在运行,主要取决于cpu是否给线程运行起来)Blocked:阻塞...原创 2020-07-20 22:44:27 · 401 阅读 · 0 评论 -
第五章 并发容器
5.1 BlockingQueueBlockingQueue是一个带有阻塞功能的队列,在Cocurrent包中,BlockingQueue是一个接口BlockingQueue是具有阻塞功能的队列,如下源码:public interface BlockingQueue<E> extends Queue<E> { boolean add(E e);//不具有阻塞功能 boolean offer(E e);//不具有阻塞功能 void put原创 2020-07-26 23:54:04 · 225 阅读 · 0 评论 -
读写锁示例
import java.util.HashMap;import java.util.Map;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReadWriteLock;import java.util.concurrent.locks.ReentrantReadWriteLock;public class ReadWriteLockTest { private Map<String,..转载 2021-02-04 23:59:29 · 315 阅读 · 0 评论 -
第一章 多线程基础
1.1线程的优雅关闭1.1.1 stop()和destory函数不能关闭线程1.1.2 线程分为守护线程和非守护线程守护线程:①.在main()函数执行完成后守护线程自动退出;②.守护线程不影响jvm虚拟机的退出需要在t.start()前面添加t.setDeamon(true)方式设置为守护线程典型案例:gc回收线程就是守护线程。非守护线程:在main()函数执行完成后不退出,只有自己线程执行完成才退出;②.非守护线程必须全部退出了jvm虚拟机才退出。1.1.3 设置状态标志位原创 2020-07-07 23:48:54 · 344 阅读 · 1 评论