首页 > 编程知识 正文

并发编程语言,深入理解java并发编程

时间:2023-05-04 21:57:14 阅读:267160 作者:1960

        前言:我们知道Java是支持多线程的,多线程是java程序调优的主要手段之一,多线程可以在包含多个CPU核心的机器上同时处理多个不同的任务,使用并发编程的目的是为了提高程序的执行速度,但并不是启动更多的线程就一定会达到更好的效果。并发编程使用不善可能会导致死锁、上下文切换频繁、线程安全等诸多问题。多线程能很好的体现出一个程序员功底

1.什么是并发

        并发是指在操作系统中某一个时间段内有几个程序都处于已启动运行到运行完毕之间。虽然这几个程序都是在同一个处理器上运行,但任一个时刻点上只有一个程序在处理器上运行。

                

(图片引自知乎: https://zhuanlan.zhihu.com/p/79550963)

2.并发与并行的区别

        多线程并发执行时CPU随机分配给某一线程时间片、获得时间片的线程在该时间段可以正常执行,时间段结束后无论是否执行完毕都要等待CPU重新分配时间片。特点是在任意时刻只有一个线程在执行。

         并行强调多个任务同时执行,特点时在任意时刻有多个任务在执行

3.并发编程三要素         原子性:即一个不可再被分割的颗粒。在Java中原子性指的是一个或多个操作要么全部执行成功要么全部执行失败。         有序性:程序执行的顺序按照代码的先后顺序执行。(处理器可能会对指令进行重排序)         可见性:当多个线程访问同一个变量时,如果其中一个线程对其作了修改,其他线程能立即获 取到最新的值。 4.要掌握并发编程都需要学习那些         4.1 多线程&并发设计原理

                并发核心概念

                并发的问题

                JMM内存模型         4.2 JUC                 并发容器                 同步工具类                 Atomic类                 Lock与Condition         4.3 线程池与Future                 线程池的实现原理                 线程池的类继承体系                          ThreadPoolExecutor

                Executors工具类

                ScheduledThreadPool Executor                 CompletableFuture用法         4.4 ForkJoinPool                 ForkJoinPool用法                 核心数据结构                 工作窃取队列                 ForkJoinPool状态控制                 Worker线程的阻塞-唤醒机制                 任务的提交过程分析                 工作窃取算法:任务的执行过程分析                 ForkJoinTask的fork/join                 ForkJoinPool的优雅关闭         4.5 多线程设计模式                 Single Threaded Execution模式                 Immutable模式                 Guarded Suspension模式                 Balking模式                 Producer-Consumer模式                 Read-Write Lock模式                 Thread-Per-Message模式                 Worker Thread模式                 Future模式

        

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。