随笔分类 -  Java

Java 开发
摘要:Fork/Join并发处理框架 学习材料来源于网络 如有侵权,联系删除 概念 ForkJoinPool是ExecutorService接口的实现,它专为可以递归分解成小块的工作而设计。fork / join框架将任务分配给线程池中的工作线程,充分利用多处理器的优势,提高程序性能。 使用fork / 阅读全文
posted @ 2020-12-02 15:20 shaoyayu 阅读(174) 评论(0) 推荐(0)
摘要:并发容器-队列 学习材料来源于网络 如有侵权,联系删除 Queue-队列数据结构的实现。分为阻塞队列和非阻塞队列。下列的蓝色区块,为阻塞队列特有方法。 分类 Queue 非阻塞队列 BlockingQueue 阻塞队列 ArrayBlockingQueue 示例1 package icu.shaoy 阅读全文
posted @ 2020-12-02 15:18 shaoyayu 阅读(109) 评论(0) 推荐(0)
摘要:并发容器Map 学习材料来源于网络 如有侵权,联系删除 HashMap 简单分析 在了解并发容器之前呢,我们先了解Hash,这一章节是基于个人理解中快速讲解的 我们先从Hash计算,到存储结构,再到源码分析,再到细节介绍 Hash计算 哈希算法(Hash)又称摘要算法(Digest),它的作用是:对 阅读全文
posted @ 2020-12-02 15:16 shaoyayu 阅读(155) 评论(0) 推荐(0)
摘要:信号量、栅栏和倒计数器 学习材料来源于网络 如有侵权,联系删除 Semaphore 简称信号量,可以控制多个线程的资源争抢许可。 acquire:获取一个许可,如果没有就等待, release:释放一个许可。 availablePermits:方法得到可用的许可数目 适用场景: 1、代码并发处理限流 阅读全文
posted @ 2020-12-02 15:15 shaoyayu 阅读(300) 评论(0) 推荐(0)
摘要:AQS抽象队列同步器详解 学习材料来源于网络 如有侵权,联系删除 同步锁的本质 同步锁的本质就是排队 同步的方式:独享锁-单个队列窗口,共享锁-多个队列窗口 抢锁的方式:插队抢(不公平锁)、先来后到抢锁(公平锁) 没抢到锁的处理方式:快速尝试多次(CAS自旋锁)、阻塞等待 唤醒阻塞线程的方式(叫号器 阅读全文
posted @ 2020-12-02 15:13 shaoyayu 阅读(189) 评论(0) 推荐(0)
摘要:Lock锁接口实现 学习材料来源于网络 如有侵权,联系删除 源码 package java.util.concurrent.locks; import java.util.concurrent.TimeUnit; /** * 与使用{@code sync}方法和语句相比,{@ code Lock}实 阅读全文
posted @ 2020-12-02 15:12 shaoyayu 阅读(205) 评论(0) 推荐(0)
摘要:锁和synchronizeed关键字 学习材料来源于网络 如有侵权,联系删除 锁的概念 自旋锁:为了不放弃CPU执行事件,循环的使用CAS技术对数据尝试进行更新,直至成功。 悲观锁:假定会发生并发冲突,同步所有对数据的相关操作,从读数据就开始上锁。 乐观锁:假定没有冲突,在修改数据时如果发现数据和之 阅读全文
posted @ 2020-12-02 15:10 shaoyayu 阅读(176) 评论(0) 推荐(0)
摘要:CAS机制与原子性 学习材料来源于网络 如有侵权,联系删除 概念 Compare and swap比较和交换。属于硬件同步原语,处理器提供了基本内存操作的原子性保证。CAS操作需要输入两个数值;一个旧值A(期望操作前的值)和一个新值B,在操作期间先比较下旧值有没有发生变化,如果没有发生变化,才交换成 阅读全文
posted @ 2020-12-02 15:09 shaoyayu 阅读(1284) 评论(0) 推荐(0)
摘要:线程安全 学习材料来源于网络 如有侵权,联系删除 竞态条件与临界区 public class Demo { public inti= 0; public void incr(){ i++; } } 多个线程访问了相同的资源,向这些资源做了写操作时,对执行顺序有要求。 临界区: incr方法内部就是临 阅读全文
posted @ 2020-12-02 15:07 shaoyayu 阅读(126) 评论(0) 推荐(0)
摘要:volatile关键字 学习材料来源于网络 如有侵权,联系删除 volatile关键字 可见性问题:让一个线程对共享变量的修改,能够及时的被其他线程看到。 根据JMM中规定的happen before和同步原则: 对某个volatile字段的写操作 happens-before每个后续对该volat 阅读全文
posted @ 2020-12-02 15:06 shaoyayu 阅读(107) 评论(0) 推荐(0)
摘要:JVM多线程内存模型详解 学习材料来源于网络 如有侵权,联系删除 JVM运行时候数据区 线程独占:每个线程都会有它独立的空间,随线程生命周期而创建和销毁 线程共享:所有线程能访问这块内存数据,随虚拟机或者GC而创建和销毁 基于这种内存模型中的多线程操作会出现的问题: 1、所见非所得 2、无法肉眼去检 阅读全文
posted @ 2020-12-02 15:05 shaoyayu 阅读(586) 评论(0) 推荐(0)
摘要:线程池 学习材料来源于网络 如有侵权,联系删除 线程是不是有多越好? 1、线程在java中是一个对象,更是操作系统的资源,线程创建、销毁需要时间。如果创建时间+销毁时间>执行任务时间就很不合算。 2、java对象占用堆内存,操作系统线程占用系统内存,根据jvm规范,一个线程默认最大栈大小1M,这个栈 阅读全文
posted @ 2020-12-02 15:03 shaoyayu 阅读(149) 评论(0) 推荐(0)
摘要:线程封闭 学习材料来源于网络 如有侵权,联系删除 线程封闭概念 多线程访问共享可变数据时,涉及到线程间数据同步的问题。并不是所有时候,都要用到共享数据,所以线程封闭概念就提出来了。 数据都被封闭在各自的线程之中,就不需要同步,这种通过将数据封闭在线程中而避免使用同步的技术称为线程封闭。 线程封闭具体 阅读全文
posted @ 2020-12-02 15:02 shaoyayu 阅读(81) 评论(0) 推荐(0)
摘要:线程通信 学习材料来源于网络 如有侵权,联系删除 要想实现多个线程之间的协同,如:线程执行先后顺序、获取某个线程执行的结果等等。 涉及到线程之间相互通信,分为下面四类: 文件共享 网络共享 共享变量 jdk提供的线程协调API JDK提供的线程线程通信API: suspend()/resume()、 阅读全文
posted @ 2020-12-02 15:00 shaoyayu 阅读(272) 评论(0) 推荐(0)
摘要:CPU缓存和内存屏障 学习材料来源于网络 如有侵权,联系删除 多级缓存 Ll Cache(一级缓存)是CPU第一层高速缓存,分为数据缓存和指令缓存。一般服务器CPU的L1缓存的容量通常在32—4096KB。 L2由于Ll级高速缓存容量的限制,为了再次提高CPU的运算速度,在CPU外部放置一高速存储器 阅读全文
posted @ 2020-12-02 14:59 shaoyayu 阅读(319) 评论(0) 推荐(0)
摘要:线程终止 学习材料来源于网络 如有侵权,联系删除 如何终止一个线程 stop()停止线程 Thead线程 package icu.shaoyayu.multithreading.chapter1; /** * @author shaoyayu * @E_Mail * @Version 1.0.0 * 阅读全文
posted @ 2020-12-02 14:57 shaoyayu 阅读(104) 评论(0) 推荐(0)
摘要:线程状态 学习材料来源于网络 如有侵权,联系删除 系统调度 New∶尚未启动的线程的线程状态。 Runnable:可运行线程的线程状态,等待CPU调度。 Blocked:线程阻塞等待监视器锁定的线程状态。处于synchronized同步代码块或方法中被阻塞。 Waiting:等待线程的线程状态。下列 阅读全文
posted @ 2020-12-02 14:56 shaoyayu 阅读(114) 评论(0) 推荐(0)
摘要:JVM的运行 学习材料来源于网络 如有侵权,联系删除 线程独占:每个线程都会有它独立的空间,随线程生命周期而创建和销毁 线程共享:所有线程能访问这块内存数据,随虚拟机或者GC而创建和销毁 方法区 JVM用来存储加载的类信息、常量、静态变量、编译后的代码等数据虚拟机规范中这是一个逻辑区划。具体实现根据 阅读全文
posted @ 2020-12-02 14:55 shaoyayu 阅读(109) 评论(0) 推荐(0)