学习方法

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

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

并发的目的

  • 充分利用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. reids不重启切换rdb到aof

    reids不重启切换rdb到aof

  2. 201771010120 苏浪浪 《面向对象程序设计(java)》第11周学习总结

    实验十一   集合 1.实验目的与要求 (1) 掌握Vetor.Stack.Hashtable三个类的用途及常用API: (2) 了解java集合框架体系组成: (3) 掌握ArrayList.Lin ...

  3. 【MySQL】大白话讲讲主从架构的几种搭配方式详解

    话不多,直接上图: 主要来详细讲讲各个搭配 1>一主一从(成本最低): 并不是用来提高程序性能的,主要是用来做数据的热备(即如果master节点挂掉的话,slave节点能充当master节点), ...

  4. Istio-架构

    读书笔记整理 工作机制:分为控制面和数据面 控制面:Pilot, Mixer(接收来自Envoy上报的数据), Citadel(证书和密钥管理) 数据面:Envoy 工作流程: 自动注入 应用程序启动 ...

  5. 一个茴字有三种写法——吐槽C#9.0的Records

    最近是微软开了Build 2020大会,由于疫情原因,改成了在线举行,Build大会上,C#公布9.0版本. 我个人对于C#的更新向来都是喜闻乐见,乐于接受的,对于博客园上某些人天天嘲讽C#只会增加语 ...

  6. Java——日期获取和日期格式化

    import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor ...

  7. JedisPool的使用-连接池

    为什么要使用JedisPool 1,获取Jedis实例需要从JedisPool中获取 2,用完Jedis实例需要返还给JedisPool 3,如果Jedis在使用过程中出错,则也需要还给JedisPo ...

  8. 2020由浅入深最强Java面试题

    1.String,StringBuffer和StringBuilder有什么区别?     String是字符串常量,不可变对象,每次对String修改都等同于生成了一个新的String象,然后将指针 ...

  9. 人机协同与AI能力训练

    我们进行<中台战略>一书的第三期分享. “人机融合是解决aI机器人冷启动的绝佳解决方案,我们这里引入了一个应答满意度的指标,每一个咨询应答都对应一个应答满意度.当消费者应该回答选择转入人工 ...

  10. nginx: [error] invalid PID number "" in ...

    1.查看进程 ps -ef|grep nginx 2.进入nginx安装目录sbin下,执行命令: ./nginx -t 如下显示: syntax is ok test is successful 3 ...