Java并发编程与高并发解决方案 (2).docx

? ? ? ? ? Java并发编程与高并发解决方案 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Java并发编程与高并发面试 一、课程准备 1.1 课程导学 本课程主要是围绕并发编程和高并发解决方案两个核心来进行讲解; 希望这门课程能够带领大家攻克并发编程与高并发的难题; 课程特点: 大量的图示及代码演示; 全面覆盖并发知识点,建立完整的知识体系,主要有:线程安全、线程封闭、线程调度、同步容器、并发容器、AQS、J.U.C等等; 高并发的解决方案与思路主要有:扩容、缓存、队列、拆分、服务降级与熔断、数据库切库、分库分表等等,通过以上帮助你构建完整的并发与高并发知识体系。 贴近面试,提高高薪面试成功率 适合人群: 对并发和高并发不了解的同学 对并发和高并发了解的同学 已经是编程高手的同学,跳槽 学习收获: 系统的学习到并发编程的知识以及高并发处理思路 修正之前在不知不觉中犯过的一些并发方面的问题 规避以后开发中一些并发方面的问题 对你的知识进行依次更为全面的梳理,完善知识体系。 学习到大量的实际场景案例分析和代码优化技巧 让你对并发编程和高并发处理有一个质的提升 将节省你准备面试的时间,让你的面试更有针对性 可以借鉴一些之前可能没有想到过的解决问题思路和手段 讲解内容步骤: 基础知识讲解与核心知识准备: 并发及并发的线程安全处理 高并发处理的思路及手段 涉及到的一些知识技能: 总体架构:SpringBoot、Maven、Jdk8、MySQL 基础组件:Mybatis、Guava、Lombok、Redis、Kafka 高级组件(类):Joda-Time、Atomic包、J.U.C、AQS、ThreadLocal、RateLimiter、Hystrix、threadPool、shardbatis、curator、elastic-job… 1.2 并发编程初体验 最简单的并发编程案例:实现一个计数功能(接下来我们使用2个例子来初次体验并发编程) CountExample.java: @Slf4j public Class CountExample{ private static int threadTotal = 200; private static int clientTotal = 5000; private static long count = 0; public static void main(String[] args){ ExecutorService exec = Executors.newCachedThreadPool(); final Semaphore semaphore =new Semaphore(threadTotal); for (int index =0; index clientTotal; index ++){ exec.execute(()-{ try{ semaphore.acquire(); add(); semaphore.release(); } catch (Exception e){ log.error(exception,e); } }); } exec.shutdown(); (count:{},count); } private static void add(){ count++; } } 5000个请求,每次只允许200个线程同时执行,打印出通过的总次数;会发现小于5000且每次的值都不一样; MapExample.java @Slf4j public Class MapExample{ private static MapInteger,Integer map = Maps.newHashMap(); private static int threadNum = 200; private static int clientNum= 5000; public static void main(String[] args){ ExecutorService exec = Executors.newCachedThreadPool(); final Semaphore semaphore =new Semaphore(threadNum); for (int index =0; index clientNum; index ++){ final int threadNum = index; exec.execute(()-{ try{ semaphore.

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档