【JUC系列】0一、之大话并发

学习方法

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

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

并发的目的

  • 充分利用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:线程结束的状态,致使缘由:
    • 一、线程正常结束,结束生命周期;
    • 二、JVM crash
    • 三、线程运行出错

进程和线程的区别

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

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

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

多线程特色

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

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

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

减小上下文切换

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

设计思想

模板模式

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

策略模式

接口只是定义(策略)的自己,实现子类能够选择不一样的实现逻辑。异步

比如说:支付,接口我只定义支付pay这个方法,子实现类1能够是支付宝支付的方式;子实现类2能够是微信支付的方式;学习

在Thread类中,Thread的建立通常都是说有两种,测试

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

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

相关文章
相关标签/搜索