多线程
文章平均质量分 94
雪原孤狼
一个技术上的坚守者,我会将自己所学的知识毫无保留的持续输出给大家,坚守自己的目标与信念。只要路是对的,就不害怕遥远。只要认准是值得的,就不要在乎得失以及沧桑变化......哪怕最淡的墨水,也胜过最强的记忆
展开
-
并发条件队列之Condition 精讲
1. 条件队列的意义 Condition将Object监控器方法( wait , notify和notifyAll )分解为不同的对象,从而通过与任意Lock实现结合使用,从而使每个对象具有多个等待集。 Lock替换了synchronized方法和语句的使用,而Condition替换了Object监视器方法的使用。 条件(也称为条件队列或条件原创 2021-01-27 10:35:41 · 932 阅读 · 1 评论 -
AQS之ReentrantReadWriteLock写锁
用法1.1 定义一个安全的list集合public class LockDemo {ArrayList<Integer> arrayList = new ArrayList<>();//定义一个集合// 定义读锁ReentrantReadWriteLock.ReadLock readLock = new ReentrantReadWriteLock(true).readLock();// 定义写锁ReentrantReadWriteLock.WriteLoc.原创 2021-01-22 16:31:51 · 184 阅读 · 0 评论 -
AQS之ReentrantReadWriteLock精讲分析上篇
1.用法1.1 定义一个安全的list集合public class LockDemo { ArrayList<Integer> arrayList = new ArrayList<>();//定义一个集合 // 定义读锁 ReentrantReadWriteLock.ReadLock readLock = new ReentrantReadWriteLock(true).readLock(); // 定义写锁 ReentrantReadWr原创 2021-01-20 14:04:38 · 172 阅读 · 0 评论 -
一文带你学会AQS和并发工具类的关系
1. 存在的意义AQS(AbstractQueuedSynchronizer)是JAVA中众多锁以及并发工具的基础,其底层采用乐观锁,大量使用了CAS操作, 并且在冲突时,采用自旋方式重试,以实现轻量级和高效地获取锁。提供一个框架,用于实现依赖于先进先出(FIFO)等待队列的阻塞锁和相关的同步器(semaphore等)。 此类旨在为大多数依赖单个原子int值表示状态的同步器提供有用的基础。 子类必须定义更改此状态的受保护方法,并定义该状态对于获取或释放此对象而言意味着什么。 鉴于这些,此类中的其他方法将原创 2021-01-15 16:23:26 · 115 阅读 · 0 评论 -
Lock锁 精讲
1.为什么需要Lock为什么synchronized不够用,还需要Lock Lock和synchronized这两个最常见的锁都可以达到线程安全的目的,但是功能上有很大不同。 Lock并不是用来代替synchronized的而是当使用synchronized不满足情况或者不合适的时候来提供高级功能的为什么synchronized不够原创 2021-01-12 18:07:37 · 633 阅读 · 0 评论 -
Synchronized 精讲
1.简介1.1 作用在并发场景中,保证同一时刻只有一个线程对有并发隐患的代码进行操作1.2 错误案例需求:两个线程对 count 变量进行200000次循环增加,预期结果是400000次public class SynchronizedDemo implements Runnable { private static int count = 0; static SynchronizedDemo synchronizedInstance = new SynchronizedDemo原创 2021-01-11 21:14:46 · 167 阅读 · 6 评论 -
volatile 关键字精讲
1.错误案例 通过一个案例引出volatile关键字,例如以下代码示例 : 此时没有加volatile关键字两个线程间的通讯就会有问题public class ThreadsShare { private static boolean runFlag = false; // 此处没有加 volatile public static void main(String[] args) throws Interrupt原创 2021-01-08 09:56:42 · 633 阅读 · 3 评论 -
Java内存模型精讲
1.JAVA 的并发模型共享内存模型 在共享内存的并发模型里面,线程之间共享程序的公共状态,线程之间通过读写内存中公共状态来进行隐式通信 该内存指的是主内存,实际上是物理内存的一小部分2.JAVA 内存模型的抽象2.1 java内存中哪些数据是线程安全的,哪些是非安全的非线程安全 : 在 java 中所有的实例域、静态域、和数组元素原创 2021-01-06 15:48:25 · 134 阅读 · 0 评论 -
如何优雅的停止线程?
喔!线程可以这么停止?0、面试场景1、interrupt 停不了?2、interrupt + InterruptedException 能停止么?3、interrupt + throw new RuntimeException() 可以么?4、如何更优雅的停止线程呢?5、interrupt 、isInterrupted、interrupted 你们在干嘛?0、面试场景话说我真的信了,????面试官A:多线程有过了解么?程序员B:有了解面试官A:那线程是如何中断的呢?面试官A:有多少中中断方式原创 2020-05-15 16:09:34 · 376 阅读 · 0 评论 -
多线程那么多API该怎么用?
线程API应该怎么用1、setPriority 设置线程的优先级2、isDaemon、setDaemon 守护线程API3、线程中断4、isAlive 、join 、线程状态5、activeCount、getName 等简单的API1、setPriority 设置线程的优先级public final void setPriority(int newPriority)说明:setPriority :更改此线程的优先级。 首先调用这个线程的checkAccess方法,没有参数这可能会导致抛出原创 2020-05-12 22:00:45 · 277 阅读 · 0 评论 -
看完这篇文章你还敢说不知道多线程是什么?
A thread is a thread of execution in a program. The Java Virtual Machine allows an application to have multiple threads of execution running concurrently.线程就是程序中执行的线程。java虚拟机允许一个应用有多个线程同时执行。Every thread has a priority. Threads with higher priority are e原创 2020-05-10 23:33:05 · 304 阅读 · 0 评论