java 线程池


线程池ThreadPool线程池包含两个list一个是线程list 一个是等待队列的list一个线程池包含7个重要的参数corePoolSize: 核心线程数 线程池被创建时 该线程池中就会有这两个线程maximumPoolSize:最大线程数keepAliveTime: 如果线程池长期不工作会归还

java 容器


容器MapTreeMap底层是红黑树多线程容器HashTable&&Vector所有方法自带锁。java1.0 最早的数据类,所有方法都加了synchronized,基本不会使用这个类型。HashMap默认是无锁的,如果需要锁可以使用 var synchronizedMap = Co

java 4种引用类型


java引用类型强引用普通的引用都是强引用Object o = new Object();软引用弱引用需饮用

ThreadLocal 底层


ThreadLocal作用为会为每个线程实现上下文

AQS 底层


AQSJDK中许多并发工具类的内部实现都依赖于AQS,如ReentrantLock, Semaphore, CountDownLatch等。AQS底层依靠CAS与同步队列。AbstractQueuedSynchronizer(队列同步器)volatile int state; 一个保证可见性的参数由

java 多线程 之锁


java 锁话术话术解释race condition竞争条件,指的是多线程访问共享数据时产生的竞争unconsistency数据的不一致问题,在并发环境下产生了非期望的结果monitor锁critical section临界区, 就是被锁的代码区域如果临界区执行时间比较长,叫做锁的粒度比较

java 多线程编程 三大特性


java 多线程编程 三大特性可见性volatile使用private static /*volatile*/ Boolean b = true; public static void main(String[] args) throws InterruptedException {

java 多线程 线程打断inerrupt ,线程结束


线程打断inerruptinerrupt() //设置打断标记位 其实就是告诉jvm 我想要打断这个线程,但是是否打断什么时候打断jvm 说了算isInerrupt() //是否被打断过 查询标记位static inerrupted() //返回当前线程是否被打断过,并重制打断标记 true->

线程的状态


线程的状态NEW 创建RUNNABLE 可运行 (有两个子状态1.ready 2.running)WAIT 等待被执行TIMED WAITING 隔一段时间后自动唤醒BLOCKING 阻塞状态TERMINATED 线程结束

java 多线程学习 线程基础 && 创建线程的5种方法


多线程基本概念进程和线程分别是什么线程进程是资源分配的基本单位线程是执行的基本单位,多个进程之前可以共享进程的资源cpucpu只做计算如果发生线程切换 则需要操作系统进行调度。线程的切换单核cpu设置多线程是否有意义有意义因为不是所有任务都消耗cpu,比如等待网络响应。这时候可以把cpu让出来让另一