JUC
小铭爱学习
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JUC学习笔记七:JMM
1.谈谈对volatile的理解 Volatile是java提供的轻量级的同步机制,有以下特点: 保证可见性 不保证原子性 禁止指令重排 在解释这三个特性之前,我们先来了解一下JMM 2.JMM JMM全称是Java内存模型,是一种概念性的东西,不是真实存在的 他其实是java为了管理内存数据安全而提出的一种解决方案 在程序运行中,其实存在两种内存,一个称为主存,一个称为工作内存。数据在不使用的时候都是存放在主存的,当有个线程任务需要这个数据的时候,就先把数据载入到工作内存使用,用完再把数据刷新回主存。原创 2020-09-28 22:27:59 · 285 阅读 · 0 评论 -
JUC学习笔记六:ForkJoin
ForkJoin 1.forkjoin原理 fork join是在jdk1.7开发出来,他的原理的就是提供并行的任务,提高效率。 在大数据量的前提下,把一个任务拆分成多个任务去执行,再把多个任务的结果汇总起来成为最终的结果 2.forkjoin工作特点 工作窃取 假设有两个任务运行,A任务运行到一半阻塞了,B任务运行完了,那么这时候B任务就会把A任务接过来运行,提高运行的效率 这个里面使用的就是双端队列 3.forkjoin的使用 使用的时候需要继承RecursiceTask package com.原创 2020-09-28 12:36:24 · 228 阅读 · 0 评论 -
JUC学习笔记五:四大函数式接口,流式计算
四大函数式接口 lambda表达式、链式编程、函数式接口、Stream流式计算 函数式接口:只有一个方法的接口 查看文档: 下面来一个一个查看 1.Function 函数式接口 只要是函数式接口都可以使用lambda表达式来简化 public class Demo01 { public static void main(String[] args) { //传入一个值,返回一个值 // Function function= new Function<S原创 2020-09-26 22:14:24 · 213 阅读 · 0 评论 -
JUC学习笔记四:线程池
线程池:3大方法,7大参数,4种拒绝策略 1.池化技术 程序运行的本质就是占用系统的资源! 使用池化技术能够更好的优化资源的使用。 包括:线程池,连接池,对象池,内存池。。。 什么是池化技术:就是事先准备好的资源,如果有人要用就来这里拿,用完再还回来。 线程池的好处: 降低资源的消耗 提高响应的速度 方便管理 线程复用、可以控制最大并发数、管理线程 2.三大方法 /** * 创建线程池的三大方法 */ public class Demo01 { public static void main原创 2020-09-26 15:41:46 · 172 阅读 · 0 评论 -
JUC学习笔记三:读写锁,阻塞队列
1.读写锁 读可以被多个线程去读 (共享锁) 写的时候只能是被一个线程去写 (独占锁) 我们先来写一个demo,在没有读写锁的情况下 import java.util.HashMap; import java.util.Map; public class ReadWriteLockDemo { public static void main(String[] args) { MyCache myCache = new MyCache(); //写入原创 2020-09-26 12:49:30 · 348 阅读 · 1 评论 -
JUC学习笔记二:集合不安全,Callable,辅助类
集合不安全 1.List不安全 通常我们在单线程的情况下去操作集合是不会出现任何问题的。 但是如果在多线程的情况下去操作集合呢。 下面代码来看一下 package com.ycm.unsafe; import java.util.ArrayList; import java.util.UUID; public class ListTest { public static void main(String[] args) { ArrayList<String> list原创 2020-09-24 09:38:37 · 183 阅读 · 0 评论 -
JUC学习笔记一:锁,生产者和消费者问题
1.进程和线程 进程:就是一个程序。 进程包含多个线程,至少包含一个。 线程:开了一个程序的进程中有用于不同功能的线程。 java默认开启了2个线程:main,GC 对于Java而言有几种开启线程的方式:Thread,Runnable,Callable Java不能开启线程:Java是运行在虚拟机上的,不可以操作硬件 public synchronized void start() { /** * This method is not invoked for the m原创 2020-09-23 12:22:18 · 158 阅读 · 0 评论
分享