![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
大白熊_BlankBear
这个作者很懒,什么都没留下…
展开
-
Executor框架
前言在Java中,使用线程来异步执行任务。Java线程的创建与销毁需要一定的开销,如果我们为每一个任务创建一个新线程来执行,这些线程的创建与销毁将消耗大量的计算资源。同时,为每一个任务创建一个新线程来执行,这种策略可能会使处于高负荷状态的应用最终崩溃。Java的线程既是工作单元,也是执行机制。从 JDK 5 开始,把 工作单元 与 执行机制 分离开来。工作单元 : Runnable Callable 执行机制: Executor框架 Executor框架简介E转载 2020-06-21 22:38:21 · 129 阅读 · 0 评论 -
线程池
前言Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 提高线程的可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一分配、调优和监控。但是,要做到合理利用线程池,必须对其实现原理了如指掌。线程池的实转载 2020-06-21 22:37:21 · 87 阅读 · 0 评论 -
并发工具类
简介在JDK的并发包里提供了几个非常有用的并发工具类。 提供并发流程控制的工具类 CountDownLatch CyclicBarrier Semaphore 提供了在线程间交换数据的工具类 Exchanger 本文会配合一些应用场景来介绍如何使用这些工具类。等待多线程完成的CountDownLatchCountDownLatch 允许一个或多个线程等待其他线程完成操作。假如有这样一个需求:我们需要解析一个Excel里多个sheet的数据,此时可以考虑使用转载 2020-06-21 22:36:40 · 103 阅读 · 0 评论 -
12个原子类基本操作
简介官方介绍当程序更新一个变量时,如果多线程同时更新这个变量,可能得到期望之外的值。比如变量 i = 1,A 线程更新 i+1,B 线程也更新i+1,经过两个线程操作之后可能 i 不等于 3,而是等于 2 。因为 A 和 B 线程在更新变量 i 的时候拿到的 i 都是 1,这就是 线程不安全的更新操作,通常我们会使用 synchronized 来解决这个问题,synchronized 会保证多线程不会同时更新变量 i。而 Java 从 JDK 1.5 开始提供了 java.util.conc转载 2020-06-21 22:35:26 · 195 阅读 · 0 评论 -
锁
锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源。源代码基于 1.8.0Lock接口在Java SE 5之后,并发包中新增了Lock接口(以及相关实现类)用来实现锁功能,它提供了与synchronized关键字类似的同步功能,只是在使用时需要 显式 地获取和释放锁。虽然它缺少了(通过synchronized块或者方法所提供的)隐式获取释放锁的便捷性,但是却拥有了锁获取与释放的 可操作性、可中断的获取锁 以及 超时获取锁 等多种synchronized关键字所转载 2020-06-21 22:33:17 · 102 阅读 · 0 评论 -
线程
线程的简介 什么是线程 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。 为什么要使用多线程 目前的处理器核心越来越多,使用多线程能有更快的响应时间,并能有更好的编程模型。 线程优先级 现代操作系统基本采用时分的形式调度运行的线程,操作系统分出每一个时间片会根据线程的优先级来分配,优先级越高的最先获取执行资源。 在Java线程中,通过一个转载 2020-06-21 22:31:06 · 80 阅读 · 0 评论