{"id":15027250,"url":"https://github.com/java-edge/java-concurrency-progamming-tutorial","last_synced_at":"2025-05-16T11:06:06.035Z","repository":{"id":31328221,"uuid":"127564682","full_name":"Java-Edge/Java-Concurrency-Progamming-Tutorial","owner":"Java-Edge","description":"大厂一线工程师四年磨一剑精心编排 Java 高并发编程教程。详细文档讲解请阅读本人的知识库仓：https://github.com/Wasabi1234/Java-Interview-Tutorial","archived":false,"fork":false,"pushed_at":"2023-05-09T18:42:19.000Z","size":780,"stargazers_count":1228,"open_issues_count":2,"forks_count":270,"subscribers_count":30,"default_branch":"master","last_synced_at":"2025-05-16T11:05:54.573Z","etag":null,"topics":["concurrency","concurrent-programming","currency","java","java8"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Java-Edge.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2018-03-31T19:35:51.000Z","updated_at":"2025-04-29T11:23:48.000Z","dependencies_parsed_at":"2022-08-07T16:15:48.675Z","dependency_job_id":"ff4fa5d3-6235-44fd-9d2e-5d6fbfaba695","html_url":"https://github.com/Java-Edge/Java-Concurrency-Progamming-Tutorial","commit_stats":null,"previous_names":["wasabi1234/java-concurrency-progamming-tutorial"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Java-Edge%2FJava-Concurrency-Progamming-Tutorial","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Java-Edge%2FJava-Concurrency-Progamming-Tutorial/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Java-Edge%2FJava-Concurrency-Progamming-Tutorial/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Java-Edge%2FJava-Concurrency-Progamming-Tutorial/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Java-Edge","download_url":"https://codeload.github.com/Java-Edge/Java-Concurrency-Progamming-Tutorial/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254518383,"owners_count":22084374,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["concurrency","concurrent-programming","currency","java","java8"],"created_at":"2024-09-24T20:06:03.798Z","updated_at":"2025-05-16T11:06:01.025Z","avatar_url":"https://github.com/Java-Edge.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"## 1 目标\n致力于构建全球最完善的 Java 高并发理论体系。让我们的程序更加可靠，跳槽面试更轻松。\n\n## 高并发方案概要\n\n### 线程安全性\n线程安全性，主要从原子性、可见性、有序性\n\n### 安全发布对象\n安全发布对象的一些核心方法，主要通过单例类的多种实现方式体会，这也是对线程安全性的巩固，也是把线程安全性涉及的一些关键字和类再一次放到实际场景使用。\n\n### 线程安全策略\n线程安全策略，包括定义不可变对象、线程封闭、同步容器、并发容器等，引出并发里的关键知识J.U.C。\n同时还额外介绍了开发中常见的一些线程不安全类和写法，并给出他们各自对应的替代方案。\n\n### AQS\nJ.U.C的重要组件，面试必问考点。\n\nAQS模型设计及相关同步组件的原理和使用，都非常实用，包括：CountDownLatch、Semaphore、CyclicBarrier、ReentrantLock与锁、Condition等。\n\n这些组件需要大家能熟练明白他们的用途及差异，不但会使用，而且还要明确知道不同方法调用后的不同效果。\n\n### J.U.C组件拓展\n\nJ.U.C相关组件，主要包括FutureTask、Fork/Join框架、BlockingQueue，其中FutureTask讲解时会对比着Callable、Runnable、Future来讲。\n\n这些组件使用场景相对AQS会少一些，但也是J.U.C的重要组成部分，也是需要掌握的\n\n### 线程调度-线程池\nnew Thread弊端、线程池的好处、ThreadPoolExecutor详细介绍（参数、状态、方法）、线程池类图、Executor框架接口\n\n### 多线程并发拓展\n死锁产生的条件及预防、多线程并发编程的最佳实践、Spring与线程安全、以及面试都特别喜欢问的HashMap和ConcurrentMap源码细节\n\n### 扩容\n垂直扩容和水平扩容的区别，数据库读操作扩展和写操作扩展\n\n### 缓存\n缓存特征（命中率、最大元素、清空策略）、影响缓存命中率因素、缓存分类和应用场景（本地缓存、分布式缓存）、高并发场景下缓存常见问题（缓存一致性、缓存并发、缓存穿透、雪崩）\n\n### MQ\n消息队列的特性（业务无关、FIFO、容灾、性能）、为什么需要消息队列以及消息队列的好处（业务解耦、最终一致性、广播、错峰与流控）\n\n### 应用拆分\n\n### 限流\n明确限流的重要作用\n限流常用的四种算法：计数法、滑动窗口、漏桶算法和令牌桶算法\n\n### 服务降级与服务熔断\n服务降级的分类：自动降级（超时、失败次数、故障、限流）和人工降级（开关），总结了服务降级和服务熔断的共性（目的、最终表现、粒度、自治）和区别（出发原因、管理目标层次、实现方式）以及服务降级要考虑的问题\n\n### 分库分表\n\n## QQ 技术交流群\n\n为大家提供一个学习交流平台，在这里你可以自由地讨论技术问题。\n\n\u003cimg src=\"assets/QQ 群.JPG\" width=\"180px\"\u003e\n\n## 微信交流群\n\u003cimg src=\"assets/微信群.jpeg\" width=\"180px\"\u003e\n\n### 本人微信\n\u003cimg src=\"assets/个人微信.jpeg\" width=\"180px\"\u003e\n\n## Java源码模拟面试解析指南\n\n\u003ca href=\"https://www.nowcoder.com/tutorial/10029/index\"\u003e\n    \u003cimg src=\"assets/牛客专刊.png\" width=\"80px\"\u003e\u003c/a\u003e\n\n\n### 绘图工具\n\n- [draw.io](https://www.draw.io/)\n- keynote\n## 知识体系\n![](https://uploadfiles.nowcoder.com/files/20190815/5088755_1565799768221_4685968-76a236d781f7dee7.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjava-edge%2Fjava-concurrency-progamming-tutorial","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjava-edge%2Fjava-concurrency-progamming-tutorial","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjava-edge%2Fjava-concurrency-progamming-tutorial/lists"}