JUC
文章平均质量分 67
cs x
这个作者很懒,什么都没留下…
展开
-
JUC(十一) 锁
各种锁的理解公平锁,非公平锁公平锁:非常公平,不能插队,必须先来后到public ReentrantLock() { sync = new NonfairSync();}非公平锁(默认):非常不公平,允许插队,可以改变顺序public ReentrantLock(boolean fair) { sync = fair ? new FairSync() : new NonfairSync();}可重入锁(递归锁)Synchonized.原创 2022-05-06 20:12:12 · 160 阅读 · 0 评论 -
JUC(十) CAS
深入理解CASCAS: compareAndSet 比较并交换 // 期望, 更新 // public final boolean compareAndSet(int expect, int update) // 如果我期望的值达到了,那么就更新,否则,不更新。CAS 是CPU的并发原语public class CASDemo { // CAS: compareAndSet 比较并交换 public static void main...原创 2022-05-06 19:39:40 · 133 阅读 · 0 评论 -
JUC(九) 单例模式
单例模式静态内部类// 静态内部类public class Holder { private Holder(){ } public static class InnerClass { private static final Holder HOLDER = new Holder(); } public static Holder getInstance() { return InnerClass.HOLDER;原创 2022-05-06 19:14:10 · 71 阅读 · 0 评论 -
JUC(八) JMM volatile
对Volatile 的理解Volatile 是 Java 虚拟机提供 轻量级 的同步机制 1、保证可见性 2、不保证原子性 3、禁止指令重排什么是JMM?JMM:JAVA内存模型,不存在的东西,是一个概念,也是一个约定!关于JMM的一些同步的约定: 线程解锁前,必须把共享变量立刻刷回主存; 线程加锁前,必须读取主存中的最新值到工作内存中; 加锁和解锁是同一把锁;上面这图画错了,Store要在Write前面8种操作如下:...原创 2022-05-06 17:11:11 · 355 阅读 · 0 评论 -
JUC(七) 异步回调
Future 设计的初衷:对将来的某个事件结果进行建模!类似于ajax没有返回值的runAsync异步回调public class FutureDemo { public static void main(String[] args) throws ExecutionException, InterruptedException { // 发起一个请求 CompletableFuture completableFuture = Completabl.原创 2022-05-06 16:24:35 · 174 阅读 · 0 评论 -
JUC(六) 四大函数式接口和ForkJoin
四大函数式接口lambda表达式,链式编程,函数式接口,Steram流式计算函数型接口Function 函数型接口函数式接口:只有一个方法的接口传入参数T,返回类型R只要是函数式接口,就可以用lambda表达式简化public class FunctionDemo { public static void main(String[] args) { /*Function<String,String> function = new F.原创 2022-05-06 15:40:33 · 684 阅读 · 0 评论 -
JUC(五) 线程池
线程池池化技术及线程池的使用程序的运行,本质:占用系统的资源!优化资源的使用线程池,连接池,内存池,对象池池化技术:事先准备好一些资源,有人要用就来拿,用完之后归还线程池的好处1.降低资源的消耗2.提高响应速度3.方便管理线程可以复用,可以控制最大并发量,管理线程线程池:三大方法,7大参数,4种拒绝策略线程的三大方法 线程池不建议使用Executors去创建,而是通过ThreadPoolExecutor的方式,这样的处理方式更加明确...原创 2022-05-06 15:07:58 · 98 阅读 · 0 评论 -
JUC(四) 读写锁ReadWriteLock,阻塞队列BlockingQueue,同步队列SynchronousQueue
目录读写锁ReadWriteLock阻塞队列(Array/Linked)BlockingQueue什么情况会使用阻塞队列?四组API1.抛出异常2.不会抛出异常3.等待阻塞(一直阻塞)4.等待超时同步队列(SynchronousQueue)读写锁ReadWriteLock读的时候可以被多线程同时读,写的时候只能有一个线程去写。独占锁(写锁):一次只能被一个线程占有 共享锁(读锁):可以被多个线程同时占有 读-读:可以共存 读-写:不能共存 写-写:原创 2022-05-05 20:53:59 · 233 阅读 · 0 评论 -
JUC(三) Callable和 常用的辅助类
Callable官方文档:Callable接口类似于Runnable ,因为它们都是为其实例可能由另一个线程执行的类设计的。 然而, Runnable不返回结果,也不能抛出被检查的异常。可以有返回值 可以抛出异常 方法不同,run() / call()调用CallableFutureTask futureTask = new FutureTask<>(c); //适配类 new Thread(futureTask,"A").start();publ...原创 2022-05-05 20:16:08 · 127 阅读 · 0 评论 -
JUC并发(二) 集合安全
1、List不安全CopyOnWriteArrayListArrarlist测试(单线程)public class ListTest01 { public static void main(String[] args) { List<String> list = Arrays.asList("1", "2", "3"); list.forEach(System.out::println); }}多线程下ArrayList还安全吗?原创 2022-05-05 19:40:18 · 128 阅读 · 0 评论 -
JUC并发(一)
目录线程和进程并发、并行线程状态wait/sleep区别LOCL锁(重点)1 传统的synchronized锁2 Synchronized和Lock锁的区别synchronized写法lock Condition写法锁是什么,如何判断锁的是谁小结线程和进程进程:一个进程往往可以包含多个线程,至少包含一个! Java默认有几个线程? 2 个 :mian、GC。线程:开了一个进程 Typora,写字,自动保存(线程负责的)Java无法直..原创 2022-05-05 19:40:42 · 469 阅读 · 0 评论