![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java多线程、并发
文章平均质量分 90
鲲鹏之上
这个作者很懒,什么都没留下…
展开
-
Java多线程通信-CyclicBarrier(栅栏)
一、CyclicBarrier(栅栏) 通过闭锁,我们可以启动一组相关的操作、或者等待一组相关的操作结束。闭锁是一次性对象,到达终止状态后将不可用。 CyclicBarrier与闭锁类似,能够延迟一组线程的进度直到到达某个状态。栅栏与闭锁的关键区别在于:所有线程必须同时到达栅栏位置,才能继续执行。闭锁用于等待事件,而栅栏等待其它线程。 线程在到达栅栏位置时,将调用a原创 2022-05-27 16:32:59 · 1419 阅读 · 0 评论 -
Java多线程通信-Semaphore(信号量)
原创 2022-05-26 19:35:04 · 2250 阅读 · 0 评论 -
Java线程详解:wait、notify、notifyAll、join
线程的概念线程是进程的子任务,一个进程可以创建多个线程,线程不拥有系统资源,但是线程可以共享进程的资源,而线程自己也有一块独立的小块空间:包括堆栈,程序计数器和局部变量。线程是CPU调度和分派的基本单位。在同一时刻cpu只能执行一段代码,或者说叫一段顺序执行流,也就是线程。cpu在不同的线程之间来回切换,因为cpu的运行速度非常高,看起来就像这些线程一起执行一样,这就是并发。线程状态...原创 2022-04-22 17:04:18 · 1302 阅读 · 0 评论 -
Java内置锁 synchronized
synchronized 同步代码块组成 在上一篇文章: 线程安全性的基本概念中,讲到过当多个线程访问状态变量,并且至少有一个线程会修改变量的值时,就需要采用同步机制来协调这些线程对对象的访问。这里说的”同步机制“包括:synchronized关键字、volatile变量、显式锁、ThreadLoacl变量以及原子变量。 今天梳理一下synchronized 关键字原创 2022-04-15 10:14:02 · 444 阅读 · 0 评论 -
线程池之 ThreadPoolExecutor
网上一堆 ThreadPoolExecutor 的解读,有些可能还相互矛盾,其实 ThreadPoolExecutor类的注释中就有大量的说明,本文基于jdk1.8.0中代码注释加上自己的一点理解与实践一、为什么使用线程池线程池主要解决2个方面的问题:提升性能在执行大量异步任务时,由于减少了任务执行的开销而明显提升性能。并且在执行一系列任务集合时,线程池提供了一种限制并管理资源(包括线程在内)的一种方法。按我的理解,线程池能够重用之前的线程,甚至可以预创建线程,这就在实际任务执行时减少了创建线程原创 2022-04-01 10:03:39 · 1265 阅读 · 0 评论 -
线程安全性的基本概念
线程安全性 我们总是说要编写线程安全的代码,有时候也会讨论某个类是不是线程安全的。那到底什么是线程安全性呢? 网上有很多说法:可以被多个线程调用,并且线程之间不会出现错误的交互;多个线程调用时,不需要做额外的动作等等。但这话,明明什么都说了,又好像什么都没有说。到底怎么才能在多个线程之间安全地调用呢,怎么算安全呢?正确性 &原创 2022-04-12 14:28:19 · 2441 阅读 · 0 评论 -
Java多线程通信-CountDownLatch(闭锁)
一、CountDownLatch(闭锁) 闭锁是一个同步工具类-它可以延迟线程的进度直到其到达终止状态。闭锁的作用相当于一扇门:在到达结束状态之前,这扇门是关闭的,并且不允许任何进程通过。当到达结束状态时,这扇门会打开并允许所有的线程通过。当闭锁到达结束状态后,将不会再改变状态,因此这扇门会一直打开。闭锁可以用来确保某些活动直到其它活动都完成后才继续执行。 CountDownLatch是一种灵活的闭锁实现。它可以使一个或多个线程等待一组事件的发生。闭锁状态包含一个计数器,它被初始化为正整数,表示需要原创 2022-05-06 15:26:59 · 1165 阅读 · 0 评论