• java util concurrent


    第一章 多线程与并发基础知识

    并发背后的问题:

    1.3程序、进程与线程

    程序是静态的概念,windows下通常指exe文件。

    进程是动态的概念,是程序的运行状态,进程说明程序在内存中的边界。

    线程是进程内的一个基本任务,每个线程都有自己的功能,是cpu分配与调度的基本单位。

    线程的三大特性:原子性、可见性、有序性

    java内存模型:JAVA Memory Model

     

    第二章java多线程

    2.1创建多线程-继承Thread

    创建线程的三种方式:

    继承Thread 实现Runnable接口 使用CallableFuture创建线程

    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.2JUCCountDownLatch倒计时锁

    适合总分任务。

    3.3JUCSemaphore信号量

    Semaphore.acquire() semaphore.release() 

     

    3.4JUCCyclicBarrier循环屏障

    3.5JUCReetrantLook重入锁

    任意线程在获取到锁之后,再次获取该锁而不会被该锁阻塞。

    3.6JUCCondition线程等待与唤醒

    核心方法:

    await()阻塞当前线程,直到signal唤醒

    signal()唤醒被await的线程,从中断处继续执行

    signalAll()唤醒所有被await()阻塞的线程

    3.7JUCCallable_Future

    Callable有返回值并且可以抛出异常

    Future是一个接口,它用于表示异步计算的结果。提供了检查计算是否完成的方法,以等待计算的完成,并获取计算的结果。

    3.8JUC之同步容器

    3.9JUCAtomicCAS算法

    原子性:是指一个操作或者多个操作要么全部执行,且执行过程中不会被任何因素打断,要么都不执行。

    3.10课程总结

  • 相关阅读:
    C#计算一段程序运行时间的三种方法
    jquery easyui combobox设置默认选中第一项
    ASP.NET Web API教程 分页查询
    ASP.NET Web Api 实现数据的分页
    开源.net 混淆器ConfuserEx介绍
    C#软件license管理(简单软件注册机制)
    MyBatis入门实例-包括实体类与数据库字段对应&CLOB字段处理
    MyBatis在insert插入操作时返回主键ID的配置
    MyBatis框架——mybatis插入数据返回主键(mysql、oracle)
    关于java中split的使用
  • 原文地址:https://www.cnblogs.com/zszitman/p/11111703.html
Copyright © 2020-2023  润新知