18年多线程视频教程并发编程互联网架构视频java面试知识-张颜源-专题视频课程...

18年多线程视频教程并发编程互联网架构视频java面试知识—39人已学习
课程介绍    
jpg
    2018年10月并发编程及原理视频培训教程:囊括线程基础知识、线程安全问题、JDK锁机制、线程建通信、并发工具、线程池等详细知识点,面试高频知识点源码深入剖析、笔记详细。全套67节课 基础理论+项目实战,由浅入深,层层深入,带您剖析并发编程原理。
课程收益
    掌握java并发编程核心知识,线程池,并发容器
    掌握JUC/AQS/CAS并发包核心知识点
    掌握JDK各种锁原理,并掌握源码和 项目实战
    学完课程可以应对大部分多线程 面试题
讲师介绍
    张颜源 更多讲师课程
    7年的开发架构经验,曾就职于国内一线互联网公司,开发工程师,现在是某创业公司技术负责人, 擅长语言有node/java/python,专注于服务端研发,人工智能相关领域, 熟悉分布式高可用系统的架构,大数据处理,微信开放平台支付等业务
课程大纲
  第1章:课程介绍和并发简介
    1. 并发编程入门到实战课程简介  5:11
    2. 什么是并发编程  10:06
    3. 并发编程的挑战之频繁的上下文切换  9:42
    4. 并发编程的挑战之死锁  10:02
    5. 并发编程的挑战之线程安全  10:46
    6. 并发编程的挑战之资源限制  5:09
  第2章:线程基础
    1. 进程与线程的区别  9:43
    2. 线程的状态及其相互转换  14:53
    3. 创建线程的方式(上)  9:55
    4. 创建线程的方式(下)  6:47
    5. 线程的挂起及其恢复  26:33
    6. 线程的中断操作  19:50
    7. 线程的优先级  13:27
    8. 守护线程  7:38
  第3章:线程安全性
    1. 什么是线程安全性  3:59
    2. 从字节码角度剖析线程不安全操作  14:49
    3. 原子性操作  7:49
    4. 深入理解synchronized关键字  14:13
    5. volatile关键字及其使用场景  6:26
    6. 单例与线程安全  16:48
    7. 如何避免线程安全性问题  10:43
  第4章:锁
    1. 锁的分类  8:52
    2. 深入理解lock接口  11:37
    3. 实现属于自己的锁  21:01
    4. AbstractQueuedSynchronizer浅析  9:46
    5. 简单介绍AbstractQueuedSynchronizer  31:07
    6. 深入剖析ReentrantLock源码之公平锁的实现  12:36
    7. 掌控线程执行顺序之多线程Debug  16:11
    8. 读写锁特性及ReentrantReadWriteLock的使用  16:35
    9. 源码探秘之AQS如何用单一int值表示读写两种状态  12:28
    10. 深入剖析ReentrantReadWriteLock之读锁源码实现  27:29
    11. 深入剖析ReentrantReadWriteLock之写锁源码实现  8:16
    12. 锁降级详解  15:28
    13. StampedLock原理及使用  13:23
  第5章:线程间的通信
    1. wait、notify、notifyAll的使用  12:12
    2. 等待通知经典模型之生产者消费者  17:16
    3. 使用管道流进行通信  11:10
    4. Thread.join通信及其源码浅析  9:34
    5. ThreadLocal的使用  10:18
    6. Condition的使用  8:40
  第6章:原子类
    1. 什么是原子类  3:31
    2. 原子更新基本类型  12:30
    3. 原子更新数组类型  9:00
    4. 原子更新属性  13:34
    5. 原子更新引用类型  6:13
  第7章:容器
    1. 同步容器与并发容器  8:13
    2. 同步容器  11:36
    3. 并发容器  9:40
    4. LinkedBlockingQueue的使用及其源码探秘  23:16
  第8章:并发工具类
    1. CountDownLatch的使用及其源码探秘  12:33
    2. CyclicBarrier的使用及其源码探秘  11:18
    3. Semaphore的使用及其源码探秘  10:03
    4. Exchanger的使用  6:49
  第9章:线程池及Executor框架
    1. 为什么要使用线程池  6:09
    2. 线程池的创建及其使用  6:40
    3. Callable、Future、FutureTask简介  10:15
    4. 线程池的核心组成部分及其运行机制  14:44
    5. 线程池拒绝策略  9:25
    6. 使用Executor框架创建线程池的n种方法  14:20
    7. 线程池的使用建议  20:43
  第10章:jvm与并发
    1. java内存模型  15:10
    2. 先行发生原则happens-before  13:03
    3. 指令重排序  16:02
  第11章:实战
    1. 需求分析  15:45
    2. 中间表设计  7:36
    3. 基础环境搭建  18:50
    4. 生产者编码实现  35:07
    5. 消费者编码实现  34:30
  第12章:课程总结
    1. 课程总结  11:32
大家可以点击【 查看详情】查看我的课程
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java-Base64算法_创新_防止表单重复提交 JAVA企业级基础课题(HashMap那些事) 企业架构师必备技能(JAVA核心技术反射) JavaWeb之基础(手写实现Tomcat服务器) java多线程编程 纯手写实现SpringIOC实现过程 JEE企业级开发(企业级项目开发权威指南) 网络爬虫之JAVA正则表达式 手写springMVC框架 老司机带你透析springMVC内部实现方式 打造高效代码结构(java性能优化) 新版本通俗易懂_观察者模式递进时讲解 ibatis连接数据库 高并发之单(多)生产者消费者线程 高并发复用数据库链接技术详解之数据库连接池 类加载器的高级特性(自定义类加器实现加密解密) iBATIS开源主流框架(实现半自动化hibernate) 企业实用技能之详解(眼睛横纹模式验证码防止恶意登陆) 动态页面的静态化处理 图片上传技术 在springMVC中实现原始的Excel文件下载方式 企业级分布式缓存技术之(redis详解) 企业高并发基石(Tomcat服务器性能优化) spring事务处理 课程文档 高并发之基础数据MySql调优 mongodb 三级联动课程资料 应用架构之灵魂设计模式 应用架构之魂设计模式实战演练应用架构之魂设计模式实战演练 揭开springAOP神秘面纱(动态代理) Mysql性能优化之索引优化 写实现Tomcat服务器 移动后台端框架设计 公司级框架原理解析 解密公司内部框架开发(打造属于自己的专属框架) 手写Tomca之深度解析动态资源请求原理 深度解析springMVC实现原理(手写springMVC框架) Java验证码 正则黑名单爬虫系统 深入数据库连接池内部运转原理 分布式服务下的交易一致 企业必备技能之面向服务编程Web-Service详解 分布式服务下的交易一致性原理及解决 分布式服务框架(dubbo+zookpeer) WEB高级前后台分离思维-懒加载无限级树形菜单 动态页面的静态化处理 大并发展示优化,动态页面的静态化 深入理解JDK动态代理本质 企业级高并发缓存解决方案 性能优化之Oracle语句优化雾区 前后台数据验证架构源码级解析 session跨域共享 JAVANIO原理详解 高并发数据库(Mysql数据库性能优化) 软件质量管控 企业常用框架springMVC基于注解+xml配置方式实现链接 WEB服务器优化之Tomcat7性能调优 JVM概述 Java开发技术之(项目工程的日志管理) 数据库连接池原理详解 Java企业级框架之核心技术(反射) Java-Base64算法(创新_防止表单重复提交) 揭开springAOP神秘面纱之动态代理 网络爬虫之JAVA正则表达式
好的,您想了解关于Java并发编程中的CountDownLatch吗? CountDownLatch是Java并发编程中非常重要的一个工具类,它可以让某个线程等待其他线程完成后再继续执行。它的作用类似于倒计时门闩,当count值减为0时,所有等待者都会被唤醒。 CountDownLatch是一次性的,也就是说,它的计数器只能使用一次。如果需要重复使用,可以考虑使用CyclicBarrier。 在使用CountDownLatch时,我们需要先创建一个CountDownLatch对象,并指定计数器的初始值。然后在需要等待的线程中调用await()方法进行等待,同时在其他线程中调用countDown()方法进行计数器的减1操作。 举个例子,假设我们有一个需求:主线程需要等待两个子线程完成后再执行。那么可以这样编写代码: ```java import java.util.concurrent.CountDownLatch; public class CountDownLatchDemo { public static void main(String[] args) throws InterruptedException { CountDownLatch countDownLatch = new CountDownLatch(2); new Thread(() -> { System.out.println(Thread.currentThread().getName() + "执行开始"); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + "执行完毕"); countDownLatch.countDown(); }, "线程1").start(); new Thread(() -> { System.out.println(Thread.currentThread().getName() + "执行开始"); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + "执行完毕"); countDownLatch.countDown(); }, "线程2").start(); System.out.println(Thread.currentThread().getName() + "等待子线程执行完毕"); countDownLatch.await(); System.out.println(Thread.currentThread().getName() + "所有子线程执行完毕,继续执行主线程"); } } ``` 在上面的例子中,我们首先创建了一个计数器初始值为2的CountDownLatch对象,然后创建了两个线程分别进行一些操作,并在操作结束后调用countDown()方法进行计数器减1操作。在主线程中,我们调用await()方法进行等待,直到计数器减为0时,主线程才会继续执行。 希望能够对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dev666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值