上一页 1 ··· 86 87 88 89 90 91 92 93 94 ··· 99 下一页
摘要: CountDownLatch 是一个同步工具类,允许一个线程或者多个线程等待其他线程完成操作,再执行。 CountDownLatch(int count) 构造一个用给定计数初始化的 CountDownLatch。 // 使当前线程在锁存器倒计数至零之前一直等待,除非线程被中断。 void awai 阅读全文
posted @ 2021-06-17 22:58 hanease 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 要点解说ReentrantLock在并发情况下只允许单个线程执行受保护的代码,而在大部分应用中都是读多写少,所以,如果使用ReentrantLock实现这种对共享数据的并发访问控制,将严重影响整体的性能。ReentrantReadWriteLock中提供的读取锁(ReadLock)可以实现并发访问下 阅读全文
posted @ 2021-06-17 22:43 hanease 阅读(87) 评论(0) 推荐(0) 编辑
摘要: 文章目录ReentrantLock简介AQS回顾ReentrantLock原理ReentrantLock结构非公平锁的实现原理lock方法获取锁tryRelease锁的释放公平锁的实现原理lock方法获取锁tryRelease锁的释放lockInterruptibly可中断方式获取锁tryLock超 阅读全文
posted @ 2021-06-17 22:12 hanease 阅读(1002) 评论(1) 推荐(0) 编辑
摘要: AQS底层实现原理用一句话总结就是:volatile + CAS + 一个虚拟的FIFO双向队列(CLH队列)。所以在了解AQS底层实现时,需要先深入了解一下CAS实现原理。 #名词解释(1)CAS:无锁的策略使用一种比较交换的技术(Compare And Swap)来鉴线程修改冲突,一旦检测到冲突 阅读全文
posted @ 2021-06-17 21:53 hanease 阅读(1536) 评论(0) 推荐(0) 编辑
摘要: 一、什么是CAS? 在计算机科学中,比较和交换(Conmpare And Swap)是用于实现多线程同步的原子指令。 它将内存位置的内容与给定值进行比较,只有在相同的情况下,将该内存位置的内容修改为新的给定值。 这是作为单个原子操作完成的。 原子性保证新值基于最新信息计算; 如果该值在同一时间被另一 阅读全文
posted @ 2021-06-16 22:53 hanease 阅读(553) 评论(0) 推荐(0) 编辑
摘要: AQS(AbstractQueuedSynchronizer)是Java众多锁以及并发工具的基础类,底层采用乐观锁,大量采用CAS操作保证其原子性,并且在并发冲突时,采用自旋方法重试。实现了轻量高效的获取锁。 1. AQS的关注点ReentrantLock中使用到了AQS高并发组件,用它来维护锁的状 阅读全文
posted @ 2021-06-16 22:37 hanease 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 为什么要有内存模型 在介绍Java内存模型之前,先来看一下到底什么是计算机内存模型,然后再来看Java内存模型在计算机内存模型的基础上做了哪些事情。要说计算机的内存模型,就要说一下一段古老的历史,看一下为什么要有内存模型。 内存模型,英文名Memory Model,他是一个很老的老古董了。他是与计算 阅读全文
posted @ 2021-06-16 22:05 hanease 阅读(68) 评论(0) 推荐(0) 编辑
摘要: 一、 什么是进程、线程?线程和进程的区别?1. 进程当一个程序进入内存运行时,即变成一个进程。进程是处于运行过程中的程序。进程是操作系统进行资源分配和调度的一个独立单位。进程的三个特征: 独立性独立存在的实体,每个进程都有自己独立私有的一块内存空间。动态性程序只是一个静态的指令集合,而进程是一个正在 阅读全文
posted @ 2021-06-16 21:56 hanease 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 从操作系统的角度讲,os会维护一个ready queue(就绪的线程队列)。并且在某一时刻cpu只为ready queue中位于队列头部的线程服务。但是当前正在被服务的线程可能觉得cpu的服务质量不够好,于是提前退出,这就是yield。或者当前正在被服务的线程需要睡一会,醒来后继续被服务,这就是sl 阅读全文
posted @ 2021-03-16 21:44 hanease 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 多线程问题: 1、java中为什么要使用多线程使用多线程,可以把一些大任务分解成多个小任务来执行,多个小任务之间互不影像,同时进行,这样,充分利用了cpu资源。 2、java中简单的实现多线程的方式 继承Thread类,重写run方法; 1 2 3 4 5 6 7 8 9 10 11 12 13 1 阅读全文
posted @ 2021-03-15 21:17 hanease 阅读(270) 评论(0) 推荐(0) 编辑
上一页 1 ··· 86 87 88 89 90 91 92 93 94 ··· 99 下一页