摘要: 线程池(重点) 线程池:三大方法、七大参数、四种拒绝策略 池化技术 程序的运行,本质:占用系统的资源!优化资源的使用!-> 池化技术(线程池、连接池、对象池......);创建和销毁十分消耗资源 池化技术:事先准备好一些资源,有人要用就拿,拿完用完还给我。 线程池的好处: 1、降低资源消耗 2、提高 阅读全文
posted @ 2023-11-04 22:45 高同学,你好 阅读(56) 评论(0) 推荐(0) 编辑
摘要: 阻塞队列 阻塞 队列 队列的特性:FIFO(fist inpupt fist output)先进先出 不得不阻塞的情况 什么情况下会使用阻塞队列:多线程并发处理、线程池 学会使用队列 添加、移除 四组API 方式 抛出异常 不抛出异常,有返回值 阻塞等待 超时等待 添加 add offer put 阅读全文
posted @ 2023-11-04 18:53 高同学,你好 阅读(59) 评论(0) 推荐(0) 编辑
摘要: 读写锁 ReadWriteLock ReadWriteLock只存在一个实现类那就是ReentrantReadWriteLock,他可以对锁实现更加细粒化的控制 读的时候可以有多个阅读器线程同时参与,写的时候只希望写入线程是独占的 Demo: package org.example.rw; impo 阅读全文
posted @ 2023-11-04 15:40 高同学,你好 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 常用的辅助类 CountDownLatch 这是一个JUC计数器辅助类,计数器有加有减,这是减。 使用方法 package org.example.demo; import java.util.concurrent.CountDownLatch; //线程计数器 public class Count 阅读全文
posted @ 2023-11-04 08:25 高同学,你好 阅读(79) 评论(0) 推荐(0) 编辑
摘要: Callable(简单) callable接口和runnable接口类似,都是为了执行另外一条线程而设计的,区别是Runnable不会返回结果也不会抛出异常。 1、可以有返回值 2、可以抛出异常 3、方法不同;run()/call(); Runnable 实现Runnable接口,重写run方法,无 阅读全文
posted @ 2023-11-03 19:25 高同学,你好 阅读(56) 评论(0) 推荐(0) 编辑
摘要: 集合类不安全 List不安全 单线程情况下集合类和很多其他的类都是安全的,因为同一时间只有一个线程在对他们进行修改,但是如果是多线程情况下,那么集合类就不一定是安全的,可能会出现一条线程正在修改的同时另一条线程启动来对这个集合进行修改,这种情况下就会导致发生并发修改异常(在jdk11的环境下多次测试 阅读全文
posted @ 2023-11-03 09:34 高同学,你好 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 8锁现象 八锁->就是关于锁的八个问题 锁是什么,如何判断锁的是谁 对象、class模板 深刻理解锁 锁的东西无外乎就两样:1、同步方法的调用者,2、Class模板。 同一个锁中,只有当前线程资源释放后才会被下一个线程所接手。 同步方法的调用者是两个不同的实例时,互不相关。 静态同步方法(stati 阅读全文
posted @ 2023-11-02 21:44 高同学,你好 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 生产者和消费者问题 synchronized版-> wait/notify juc版->Lock 面试:单例模式、排序算法、生产者和消费者、死锁 生产者和消费者问题 Synchronized版 package org.example.pc; public class A { public stati 阅读全文
posted @ 2023-11-02 20:03 高同学,你好 阅读(79) 评论(0) 推荐(0) 编辑
摘要: Lock锁(重点) 传统的synchronized 传统的解决多线程并发导致的一些问题我们会使用synchronized关键字来解决,synchronized的本质就是队列、锁。 Lock的实现类有:可重复锁(最常用)、读锁、写锁 在创建可重复锁时,可传入boolean类型值来决定该锁是公平锁(先来 阅读全文
posted @ 2023-11-02 18:48 高同学,你好 阅读(160) 评论(0) 推荐(1) 编辑
摘要: 进程和线程 进程 一个程序,如QQ.exe,是程序的集合 一个进程往往可以包含多个线程,至少包含一个 java默认有两个线程,GC垃圾回收线程和Main线程 线程:一个进程中的各个功能 java无法真正的开启线程,因为java是运行在虚拟机上的,所以只能通过C++,通过native本地方法调用C++ 阅读全文
posted @ 2023-11-02 17:47 高同学,你好 阅读(123) 评论(0) 推荐(1) 编辑