JAVA并发编程
文章平均质量分 87
程序员的日常分享
本公众号不定期分享java语言、Go语言、云原生、微服务等领域的技术知识。传播优秀接地气的文章,共同提高、成长,开启架构师之路
展开
-
程序员经典面试题——java并发编程-线程池(二)ThreadPoolExecutor参数详解
如果觉得写的还可以请关注微信公众号:程序猿的日常分享,定期更新分享。上一篇介绍了Executor框架,说到了Executor框架的成员,那么它最核心的成员就是ThreadPoolExecutor,它是线程池的实现类。ThreadPoolExecutor主要参数ThreadPoolExecutor主要有6个参数,构造方法如下:public ThreadPoolExecutor(int corePoolSize, int maximu原创 2021-03-23 10:08:00 · 314 阅读 · 0 评论 -
java并发编程-线程池(一)Executor框架
如果觉得写的还可以请关注微信公众号:程序猿的日常分享,定期更新分享。为什么需要线程池在java中,使用线程来执行异步任务。java线程的创建与销毁需要一定的开销。如果每个任务都创建一个线程会带来哪些问题:1、如果我们为每一个任务都创建一个新线程来执行,这些线程的创建与销毁将消耗大量的计算资源。同时,为每一个任务创建一个新线程来执行,这种策略可能会使处于高负荷状态的应用最终崩溃。2、过多的线程会占用过多的内存等资源,还会带来过多的上下文切换,同时还会导致系统不稳定。线程池解决问题思路针原创 2021-01-25 21:30:04 · 136 阅读 · 0 评论 -
java并发编程-线程的6种状态及转换
如果觉得写的还可以请关注微信公众号:程序猿的日常分享,定期更新分享。线程的6种状态就像生命一样,线程也有从出生到死亡的过程,这个过程就是线程的生命周期,在java中,线程的生命周期共有6种状态,分别是:初始(NEW):新创建了一个线程对象,但还没有调用start()方法。 运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。 线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池原创 2021-01-07 09:58:19 · 129 阅读 · 0 评论 -
java并发编程-final关键字
final的作用1、final可以修饰类,方法和变量。2、final修饰的类,不能被继承,即它不能拥有自己的子类。3、final修饰的方法,不能被重写。4、final修饰的变量,无论是类属性、对象属性、形参还是局部变量,都需要进行初始化操作。 不变性如果对象在被创建之后,其状态就不能修改了,那么它就具备“不变性”。举个简单例子:public class User { //使用final修饰变量 final int age = 20; public sta原创 2021-01-07 19:05:17 · 129 阅读 · 0 评论 -
java并发编程-AQS
如果觉得写的还可以请关注微信公众号:程序猿的日常分享,定期更新分享。AQS是什么AQS的全称为(AbstractQueuedSynchronizer),这个类也是在java.util.concurrent.locks下面,他是用来构建锁或者其他同步组件的基础框架,他使用了一个int的state字段来表示同步状态,通过内置的FIFO队列来完成资源获取线程的排队工作。从名字上可以看出他是一个抽象类,那么我们看下继承他的子类有哪些如图所示,AQS 在 ReentrantLock、Reentran原创 2021-01-04 10:22:48 · 98 阅读 · 0 评论 -
java并发编程-Lock
关注微信公众号:程序猿的日常分享,定期更新分享。在java1.5之后,并发包中增加了Lock接口用来实现锁的功能,他提供了与synchronized关键字类似的同步功能,只是在使用的时候需要显式的获取和释放锁。虽然它缺少了隐式获取释放锁的便捷性,但是却拥有了锁获取和锁释放的可操作性、可中断的获取锁以及超时获取锁等多种synchronized关键字不具备的功能。Lock是什么通过源码我们可以知道,Lock是一个接口,他总共有6个Api组成。代码如下:public interface Lock原创 2021-01-02 10:42:13 · 106 阅读 · 0 评论 -
java并发编程-synchronized
关注微信公众号:程序猿的日常分享,定期更新分享。在java中synchronized关键字是同步锁,他可以让我们的程序运行起来线程安全,屏蔽多线程带来的问题,实现同步是要很大的系统开销作为代价的,甚至可能造成死锁,所以尽量避免无谓的同步控制。实现原理Synchronized是通过对象内部的一个叫做监视器锁(monitor)来实现的。但是监视器锁本质又是依赖于底层的操作系统的互斥锁(Mutex Lock)来实现的。而操作系统实现线程之间的切换这就需要从用户态转换到核心态,这个成本非常高,状态.原创 2020-12-31 11:31:23 · 110 阅读 · 0 评论 -
java并发编程-java内存模型JMM
关注微信公众号:程序猿的日常分享,定期更新分享。JMM是什么JMM 是和多线程相关的一组规范,需要各个 JVM 的实现来遵守 JMM 规范,以便于开发者可以利用这些规范,更方便地开发多线程程序。这样一来,即便同一个程序在不同的虚拟机上运行,得到的程序结果也是一致的。如果没有 JMM 内存模型来规范,那么很可能在经过了不同 JVM 的“翻译”之后,导致在不同的虚拟机上运行的结果不一样,那是很大的问题。因此,JMM 与处理器、缓存、并发、编译器有关。它解决了 CPU 多级缓存、处理器优化、指令重原创 2020-12-29 10:36:55 · 98 阅读 · 0 评论