• 【JUC系列】01、之大话并发


    学习方法

    学习技术的方法都很类似,大部分都有着类似的步骤:

    • 场景
    • 需求
    • 解决方案
    • 应用
    • 原理

    并发的目的

    • 充分利用CPU 和 I/O资源
    • 提高效率

    并发的维度

    • 分工
    • 同步/协作
    • 互斥

    分工

    • 线程池
    • fork/join
    • future
    • Guarded Suspension 保护性暂挂模式
    • Balking模式
    • Thread per Message 模式
    • 生产者-消费者模式
    • Worker thread模式
    • 两阶段终止模式
      -其他模式

    同步/协作

    • 信号量
    • Monitor
      • Synchronized
      • condition & lock
    • CountDownLatch

    线程的5个状态

    线程的生命周期中,存在着以下几个状态:

    • new:创建线程,此时只是一个对象,线程并没有产生
    • runnable:new之后的线程,通过start()方法开始,进入runnable 状态。即可执行状态,他是running状态的预备状态,等待cup的调度
    • running:
    • blocked:所阻塞状态
    • terminated:线程结束的状态,导致原因:
      • 1、线程正常结束,结束生命周期;
      • 2、JVM crash
      • 3、线程运行出错

    进程和线程的区别

    进程是受操作系统管理的基本运行单元

    线程是在进程中独立运行的子任务

    进程间如何通讯,线程间如何通讯

    多线程特点

    • 可以在同一时间内运行更多不同种类的任务
    • 多线程是异步的
    • 线程的调用是随机的

    测试上下文切换次数和时长

    • Lmbench3 测试时长
    • vmstat 测试切换次数

    减少上下文切换

    • 无法并发编程
    • CAS算法
    • 使用最少线程,线程池

    设计思想

    模板模式

    每个线程Thread 步骤都是 start->run 其中run的实现细节由实现类决定,即模板模式

    策略模式

    接口只是定义(策略)的本身,实现子类可以选择不同的实现逻辑。

    好比说:支付,接口我只定义支付pay这个方法,子实现类1可以是支付宝支付的方式;子实现类2可以是微信支付的方式;

    在Thread类中,Thread的创建一般都是说有两种,

    • 一种是创建Thread,
    • 一种是实现runnable接口。
    • callable

    其实本质上前者是重写run方法,后者是实现runnable接口中的run(), 并把实例作为构造Thread的参数
    Runnable接口即是策略模式的体现
    JDBC中 查询

  • 相关阅读:
    c#常用的技巧
    在Web应用程序中使用Castle ActiveRecord
    Castle Query返回System.String程序报错的解决方法
    C++标准转换运算符const_cast
    Linux目录解释
    [转载]存储过程与函数的区别
    详解GCC的下载和安装
    Linux控制台的快捷键
    Linux下软件的安装和卸载
    电路交换,报文交换和分组交换
  • 原文地址:https://www.cnblogs.com/Profound/p/13096834.html
Copyright © 2020-2023  润新知