# concurrency **Repository Path**: zh_lys/concurrency ## Basic Information - **Project Name**: concurrency - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-08-17 - **Last Updated**: 2021-08-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # concurrency 多线程学习 #### 介绍 这些是学习《汪文君Java多线程编程实战》视频里所敲代码,视频中所介绍的知识深入浅出,很好理解,只要是知识点,老师基本都会用代码去实现。 #### 1、关于线程的代码 concurrency包下是有关线程的代码,其他包下的可以忽略,有模拟银行叫号系统的多线程,有自己实现的锁(因为synchronized没办法打断),还会详细解读jdk文档。 #### 2、课程大纲 1. 线程介绍 2. 创建并启动线程 3. 线程的生命周期 4. Runnable接口介绍 5. Thread API详细介绍 6. 线程同步,锁技术 7. 如何优雅的停止线程 8. 线程间通讯 9. 线程组详细介绍 10. 线程池原理以及实现一个简单的线程池 11. 线程异常捕获以及线程堆栈信息详细讲解 12. FIFO队列以及多线程环境下的运行 13. BoolenLock锁实现 14. 常用设计模式在多线程环境下的使用 15. 查缺补漏 #### 3、拓展 其中应用了大量的java8的语法,还是值得学习的。 #### 4、部分代码 创建线程 ```java new Thread("P"){ @Override public void run() { while (true){ produceConsumerVersion1.product(); } } }.start(); ``` 循环创建线程 ```java Stream.of("C1", "C2").forEach(n -> { new Thread(n) { @Override public void run() { while (true) { produceConsumerVersion1.consume(); } } }.start(); }); ``` 获取线程之间的调用信息 ```java Arrays.asList(Thread.currentThread().getStackTrace()).stream() .filter(e->!e.isNativeMethod()) .forEach(e-> Optional.of(e.getClassName()+":"+e.getMethodName()+":"+e.getLineNumber()) .ifPresent(System.out::println)); ``` #### 5、后语 如果有人想要视频的话,可以留言并附邮箱;