学习方法

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

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

并发的目的

  • 充分利用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中 查询

【JUC系列】01、之大话并发的更多相关文章

  1. Java多线程系列--“JUC集合”01之 框架

    概要 之前,在"Java 集合系列目录(Category)"中,讲解了Java集合包中的各个类.接下来,将展开对JUC包中的集合进行学习.在学习之前,先温习一下"Java ...

  2. Java多线程系列--“JUC锁”01之 框架

    本章,我们介绍锁的架构:后面的章节将会对它们逐个进行分析介绍.目录如下:01. Java多线程系列--“JUC锁”01之 框架02. Java多线程系列--“JUC锁”02之 互斥锁Reentrant ...

  3. Java之JUC系列:外部Tools

    前面写了两篇JDBC源码的文章,自己都觉得有点枯燥,先插一段JUC系列的文章来换换胃口,前面有文章大概介绍过JUC包含的东西,JUC体系包含的内容也是非常的多,不是一两句可以说清楚的,我这首先列出将会 ...

  4. java高并发系列 - 第2天:并发级别

    由于临界区的存在,多线程之间的并发必须受到控制.根据控制并发的策略,我们可以把并发的级别分为阻塞.无饥饿.无障碍.无锁.无等待几种. 阻塞 一个线程是阻塞的,那么在其他线程释放资源之前,当前线程无法继 ...

  5. 自旋锁-JUC系列

    公众号原文:自旋锁-JUC系列 前言 2022!这个年份现在看起来都觉得有那么些恍惚的未来感,然而现在已在脚下. 无边落木萧萧下, 不尽长江滚滚来! 人生如白驹过隙! 本来计划最近把AQS源码分析做了 ...

  6. AQS源码二探-JUC系列

    本文已在公众号上发布,感谢关注,期待和你交流. AQS源码二探-JUC系列 共享模式 doAcquireShared 这个方法是共享模式下获取资源失败,执行入队和等待操作,等待的线程在被唤醒后也在这个 ...

  7. AQS源码三视-JUC系列

    AQS源码三视-JUC系列 前两篇文章介绍了AQS的核心同步机制,使用CHL同步队列实现线程等待和唤醒,一个int值记录资源量.为上层各式各样的同步器实现画好了模版,像已经介绍到的ReentrantL ...

  8. java io系列01之 "目录"

    java io 系列目录如下: 01. java io系列01之  "目录" 02. java io系列02之 ByteArrayInputStream的简介,源码分析和示例(包括 ...

  9. SAP接口编程 之 JCo3.0系列(01):JCoDestination

    SAP接口编程 之 JCo3.0系列(01):JCoDestination 字数2101 阅读103 评论0 喜欢0 JCo3.0是Java语言与ABAP语言双向通讯的中间件.与之前1.0/2.0相比 ...

  10. Java 集合系列 01 总体框架

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

随机推荐

  1. 关于react的一些总结

    之前为了学习redux买了一本<深入浅出react和redux>,只看了redux部分.最近重新一遍,还是很有收获,这里结合阅读文档时的一些理解,记下一些初学者可能不太注意的东西. 原则: ...

  2. 如何在本地调试你的 Spark Job

    生产环境的 Spark Job 都是跑在集群上的,毕竟 Spark 为大数据而生,海量的数据处理必须依靠集群.但是在开发Spark的的时候,不可避免我们要在本地进行一些开发和测试工作,所以如何在本地用 ...

  3. [原创][开源] SunnyUI.Net 开发日志:ListBox 增加跟随鼠标滑过高亮

    QQ群里,寸目说,ListBox鼠标移动时,当前行需要焦点,我想了想,不难实现啊 不就是在鼠标移动时重绘Item嘛,何况选中的Item已经改了颜色了. 见UIListBox代码: protected ...

  4. storm-jdbc详解

    今天来说说Storm集成Jdbc是如何完成的,代码如下: 写入数据: 先来讲讲官方API: Map hikariConfigMap = Maps.newHashMap(); hikariConfigM ...

  5. 二、$CSS部分

    1.css sprite是什么,有什么优缺点 概念:将多个小图片拼接到一个图片中.通过background-position和元素尺寸调节需要显示的背景图案. 优点: 减少HTTP请求数,极大地提高页 ...

  6. Spring Boot 教程(2) - Mybatis

    Spring Boot 教程 - Mybatis 1. 什么是Mybatis? MyBatis 是一款优秀的持久层框架,它支持自定义 SQL.存储过程以及高级映射.MyBatis 免除了几乎所有的 J ...

  7. StreamSets使用指南

    StreamSets使用指南 最近在调研Streamsets,照猫画虎做了几个最简单的Demo鉴于网络上相关资料非常少,做个记录. 1.简介 Streamsets是一款大数据实时采集和ETL工具,可以 ...

  8. 又抓了一个导致频繁GC的鬼--数组动态扩容

    概述 本周有个同事过来咨询一个比较诡异的gc问题,大概现象是,系统一直在做cms gc,但是老生代一直不降下去,但是执行一次jmap -histo:live之后,也就是主动触发一次full gc之后, ...

  9. Python所有异常错误的父类--BaseException

    BaseException # 所有异常的基类 +-- SystemExit # 解释器请求退出 +-- KeyboardInterrupt # 用户中断执行(通常是输入^C) +-- Generat ...

  10. 动态生成Person类的对象 代码参考

    #include <iostream> #include <string> using namespace std; class Person { private: strin ...