![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java并发解析
zcz5566719
这个作者很懒,什么都没留下…
展开
-
【Java并发解析】Future与Callable
文章目录Runnable与Callable接口Runnable的缺陷Callable 接口Future类Callable和Future的关系重要方法Runnable与Callable接口Runnable的缺陷不支持返回一个返回值,run方法被void的修饰无法抛出check异常,也是因为原始接口的run方法是没有抛出异常的修饰的。只能用try,catch。Callable 接口类似与Runnable,被其他线程执行的任务。需要重写call方法,并且是有返回值的。而且可以抛出异常。Futur原创 2020-11-12 10:32:15 · 238 阅读 · 0 评论 -
【Java并发解析】控制并发流程与AQS
文章目录什么是控制并发流程常见的并发控制工具类CountDownLatchSemaphoreConditionCyclicBarrierAQS(AbstractQueueSynchronizer)什么是控制并发流程控制线程执行的顺序,实现线程之间的相互配合。常见的并发控制工具类CountDownLatch倒数门闩,达到一定的数量才可以执行。在倒数结束之前,线程都在等待。构造方法:CountDownLatch countDownLatch = new CountDownLatch(5);参数表原创 2020-11-10 21:30:17 · 112 阅读 · 0 评论 -
【Java并发解析】并发容器解析
文章目录并发容器概览常用的并发容器淘汰的并发容器ConcurrentHashMapHashMapConcurrentHashMap并发队列并发队列概述阻塞队列BlockingQueue非阻塞队列ConcurrentLinkedQueueCopyOnWriteArrayList并发容器概览常用的并发容器重点的主要是ConcurrentHashMap , CopyOnWriteArrayList, 和接口BlockingQueue淘汰的并发容器Vector:性能不好,主要是全部都是synchron原创 2020-11-04 22:51:28 · 165 阅读 · 0 评论 -
【Java并发解析】Atomic包与CAS
文章目录原子类与作用六种原子类AtomicIntegerAtomicIntegerArrayAtomicReferenceAtomicIntegerFiledUpdateAdder原子类与作用原子特性:一组操作时不可以被打断的,要不没进行,要不完整的完成。即使在多线程的情况下。特点:粒度更细,更轻量。但是在高度竞争情况下效率降低。六种原子类AtomicInteger生产实例AtomicInteger atomicInteger = new AtomicInteger();实例具有的方法:原创 2020-10-31 18:33:29 · 101 阅读 · 0 评论 -
【Java并发解析】各种各样的锁
文章目录Lock接口Lock接口中的方法锁的分类乐观锁与悲观锁可重入锁与非可重入锁公平与非公平共享锁与排他锁自旋锁和阻塞锁中断锁与不可中断锁优化(JVM帮助实现)Lock接口Lock和Syncronized是两个最常见的锁。Lock接口最常见的实现类是ReentrantLock。Synchronized缺点:效率低:锁的释放困难,无法灵活释放锁。无法知道是否成功获取锁。Lock接口中的方法lock(): 最普通的方法,不会在异常时自动释放锁。因此最佳实践是,在finally中释放锁, 保原创 2020-10-28 22:34:31 · 96 阅读 · 0 评论 -
【Java并发】死锁
文章目录什么是死锁发生死锁的例子死锁的修复实际工程中如何避免死锁其他活跃性问题面试问题什么是死锁什么是死锁:发生在并发中,两者互不相让,互相持有对方所需要的资源,又不主动释放,导致程序卡死。死锁的影响死锁的影响在不同的系统中不同的。在数据库中就是可以检测并且放弃事务的。但是JVM无法自动处理死锁。死锁发生的几率不高但是危害大,压力测试无法找出所有的潜在死锁。发生死锁的例子互相拿对方的锁。死锁的修复实际工程中如何避免死锁其他活跃性问题面试问题...原创 2020-09-02 21:59:49 · 106 阅读 · 0 评论 -
【Java并发】Java内存模型
文章目录Java 内存模型——底层原理什么是底层原理JVM内存结构、Java内存模型、Java对象模型JVM内存结构Java 对象模型JMM内存模型重排序可见性原子性本节主要分析Java的内存模型,辨析Java 内存模型——底层原理什么是底层原理保证Jvm在不同的cpu平台上得到的机器指令相同,因此制定了一套规范。JVM内存结构、Java内存模型、Java对象模型整体方向:JVM内存结构,和Java虚拟机的运行时区域有关。Java内存模型,和Java的并发编程有关。Java对象模型,和J原创 2020-08-30 16:54:54 · 77 阅读 · 0 评论 -
【Java并发】线程安全与线程性能
文章目录线程安全线程安全问题:竞争条件冲突及分析逸出线程安全无论需要怎么样的多线程访问的情况,都不需要进行额外的处理,程序都可以正确运行,就是线程安全的。线程安全可能的代价,降低了运行速度。且难于设计。线程安全问题:运行结果错误活跃性问题;死锁,活锁,饥饿对象发布和初始化的安全问题竞争条件冲突及分析package ThreadError;import java.util.concurrent.BrokenBarrierException;import java.util.conc原创 2020-08-20 02:11:07 · 154 阅读 · 0 评论 -
【Java并发】线程的各个属性,未捕获异常
文章目录线程属性总览线程ID与名称是否守护线程线程优先级线程未捕获异常UncaughtExceptionHandler线程属性总览线程ID与名称作用:表示不同的线程。线程ID是无法修改的且自增的。线程的ID从1开始,但是自己创建的ID并不是2,因为JVM会默认创建新的ID。对于线程的名字,初始是0,其余的会依次自增。两种方法起名字:Thread thread = new Thread("线程1")thread.setName("线程1") 设置名字是否守护线程作用:给用户线程提供服务原创 2020-08-18 17:47:46 · 98 阅读 · 0 评论 -
【Java并发】Thread和Object类的重要方法
文章目录wait, notify, notifyAll 方法详解手写生产者消费者设计模式奇偶线程打印为什么这几个方法在Object方法里,而sleep在Thread里sleep方法详解wait/notify、sleep的异同join方法yield方法获取当前线程引用,Thread.currentThread()方法Start和run方法stop,suspend,resume方法wait, notify, notifyAll 方法详解是Object类的方法。因此是对象的方法。阻塞阶段:获取了对象的mo原创 2020-08-18 01:02:15 · 206 阅读 · 0 评论 -
【Java并发】线程的生命周期
文章目录线程的6种状态NewRunnableBlockedWaitingTimed_WaitingTerminated线程状态之间的转化阻塞的概念线程的6种状态六个新状态:New, Runnable, Blocked, Waiting, Timed Waiting, TerminatedNew已创建但是还没启动的方法Runnable调用start方法之后,一定进入这一状态,可运行的。即使没有拿到资源,也是可运行的Blocked进入被synchronized的代码块或者方法修饰的。其他的不是。原创 2020-08-17 10:43:04 · 88 阅读 · 0 评论 -
【Java并发解析】ThreadLocal解析
1. ThreadLocal的使用场景工具类不是线程安全的,我们让每个线程都有一个独立的工具类。避免参数传递的麻烦。场景1.每个线程需要一个独享的对象原创 2020-08-02 21:59:40 · 324 阅读 · 0 评论 -
【Java并发解析】线程池
4. 线程池的状态使用线程池的注意事项:防止任务堆积避免线程过度增加排查线程泄露5. 线程池的组成与实现原理1.线程池的组成线程池包括:管理器(创建和停止),工作线程,任务队列(BlockingQueue),任务接口(Task)2. Executor家族线程池继承与实现的关系:以下都是出现在线程池的方法。Executor:是一个顶层接口,只有一个方法。执行任务的。ExecutorServices:继承了Executor的接口,可以管理线程池。Executors:这是一个工具原创 2020-08-02 21:04:40 · 107 阅读 · 0 评论