java util concurrent
2020-12-13 04:32
标签:safe sch schedule cached col 总结 model 过多 三种方式 第一章 多线程与并发基础知识 并发背后的问题: 1.3程序、进程与线程 程序是静态的概念,windows下通常指exe文件。 进程是动态的概念,是程序的运行状态,进程说明程序在内存中的边界。 线程是进程内的一个基本任务,每个线程都有自己的功能,是cpu分配与调度的基本单位。 线程的三大特性:原子性、可见性、有序性 java内存模型:JAVA Memory Model 第二章java多线程 2.1创建多线程-继承Thread类 创建线程的三种方式: 继承Thread类 实现Runnable接口 使用Callable和Future创建线程 2.2创建多线程-实现Runnable接口 2.3创建多线程-实现Callable接口 2.4Synchronized线程同步机制 2.5线程的五种状态 新建 就绪 运行中 阻塞 死亡 2.6死锁的产生 多线程对公共资源进行操作时,彼此不释放自己的资源,而去试图操作其他线程的资源,而形成交叉引用,就会产生死锁。 尽量减少公共资源的引用,用完立马释放; 2.7重新认识线程安全ThreadSafe 第三章JDK并发工具包JUC 3.1java并发工具包与连接池 executors 1.CachedThreadPool可缓存线程池 无限大,如果线程池中没有可用的线程则创建,有空闲的线程则利用起来 2.FixedThreadPool定长线程池 固定线程总数,空间线程用于执行任务,如果线程都在使用后续进入等待状态,在线程池中的线程释放后,再执行后续的任务。 如果任务处于等待的状态,备选的等待算法为LIFO后进先出 3.SingleThreadExcecutor单线程池 4.ScheduledTreadPool调度线程池 线程池优点: 重用存在的线程,减少对象消亡的开销 线程总是可控,提高资源的利用率 避免过多资源竞争,避免阻塞 提供额外功能,定时执行、定期执行、监控等 3.2JUC之CountDownLatch倒计时锁 适合总分任务。 3.3JUC与Semaphore信号量 Semaphore.acquire() semaphore.release() 3.4JUC之CyclicBarrier循环屏障 3.5JUC之ReetrantLook重入锁 任意线程在获取到锁之后,再次获取该锁而不会被该锁阻塞。 3.6JUC之Condition线程等待与唤醒 核心方法: await()阻塞当前线程,直到signal唤醒 signal()唤醒被await的线程,从中断处继续执行 signalAll()唤醒所有被await()阻塞的线程 3.7JUC之Callable_Future Callable有返回值并且可以抛出异常 Future是一个接口,它用于表示异步计算的结果。提供了检查计算是否完成的方法,以等待计算的完成,并获取计算的结果。 3.8JUC之同步容器 3.9JUC之Atomic与CAS算法 原子性:是指一个操作或者多个操作要么全部执行,且执行过程中不会被任何因素打断,要么都不执行。 3.10课程总结 java util concurrent 标签:safe sch schedule cached col 总结 model 过多 三种方式 原文地址:https://www.cnblogs.com/zszitman/p/11111703.html