![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java多线程
蚂蚁雅嘿
这个作者很懒,什么都没留下…
展开
-
CompletableFuture
CompletableFuture:相关知识点记录。原创 2024-04-29 14:35:32 · 67 阅读 · 0 评论 -
记一次异步编程类CompletableFuture使用案例
下面记录了一次,多线程处理处理一个业务的例子,并且要等待所有异步子线程执行完成后,主线程才能继续往下执行。CompletableFuture 是jdk8进入的一个异步变成工具,可以实现多线程编程。supplyAsync:异步线程有返回值;runAsync:异步线程没返回值。原创 2023-08-21 10:26:39 · 143 阅读 · 0 评论 -
记一次Jmeter需要登录后访问接口
新建线程组线程组下新建http request编辑http request新建请求头(因为此接口是在spring boot内部写的一个测试接口,所以需要登录权限才能访问)编辑http header manager主要是复制浏览器登录后访问后的请求头信息到jmeter中来,实现登录后访问。首先页面登录后,浏览器访问我们要测试的接口:http://localhost:8082/testRed复制此次请求的request header...原创 2020-11-30 17:10:56 · 1480 阅读 · 0 评论 -
并发工具CountDownLatch和CyclicBarrier
1. 等待多线程完成的CountDownLatchCountDownLatch允许一个或多个线程等待其他线程完成操作。背景:在jdk1.5之前中的join方法可以实现让当前线程等待join线程执行结束。其实现原理是不停检查join线程是否存活,如果join线程存活则让当前线程永远等待。例如:public class Test2 { public static void main(String[] args) throws InterruptedException { Th原创 2020-10-29 10:09:48 · 86 阅读 · 0 评论 -
深入理解synchronized
使用synchronized的方式synchronized(lockObject){}public synchornized void test(){ //代码}但这里需要指出的是,无论是对一个对象进行加锁还是对一个方法进行加锁,实际上,都是对对象进行加锁。对于synchronized这个关键字,可能之前大家有听过,他是一个重量级锁,开销很大,建议大家少用点。但大家可能也听说过,但到了jdk1.6之后,该关键字被进行了很多的优化,已经不像以前那样不给力了,建议大家多使用。基于转载 2020-10-19 21:25:49 · 111 阅读 · 0 评论 -
理解ThreadLocal和底层实现
一、定义从jdk的官方文档中的描述:ThreadLocal类是用来提供放线程内部的局部变量,这样变量在多线程环境下访问(通过set和get访问)时能保证各个线程间的变量相对独立于其他线程内的变量。ThreadLocal实例通常来说都是private static 类型的,用来关联线程和线程上下文。我们可以得知ThreadLocal的作用是提供线程内的局部变量,不同的线程之间不会相互干扰。这种...原创 2020-04-15 01:18:13 · 379 阅读 · 1 评论 -
线程的生命周期
线程的生命周期大体可以分为5个阶段:NEWRUNNABLERUNNINGBLOCKEDTERMINATED一、线程的NEW状态当我们用关键字new创建了一个Thread对象时,此时它并不处于执行状态,因为没有用start方法启动该线程,那么线程的状态为NEW状态,准确的说,它只是Thread对象的状态,因为在没有start之前,该线程根本不存在,与你用关键字new创建一个普通的Jav...原创 2019-09-26 22:14:31 · 194 阅读 · 0 评论 -
深入剖析volitail关键字
背景CPU缓存一致性问题:由来:CPU的发展频率不断得到提升,但是计算机内存在访问速度上没有多大突破,因此CPU的处理速度和内存的访问速度之间的差距越来越大,CPU资源受到大量限制,降低了CPU整体的吞吐量,为了解决这个问题,于是就开始在CPU和主存之间增加了缓存,现在缓存的数量可以增加到了3级。缓存的出现提高了CPU的吞吐能力,但是也引入了缓存一致性问题。比如i++这个操作,在程序运行过...原创 2019-09-20 01:05:18 · 5214 阅读 · 3 评论 -
java 底层CAS原理
CASCompare and Swap, 翻译成比较并交换。java.util.concurrent包中借助CAS实现了区别于synchronize同步锁的一种乐观锁。乐观锁思路就是,每次不加锁而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,直到成功为止。某个线程可以不让出cpu,而是一直while循环,如果失败就重试,直到成功为止。所以,当数据争用不严重时,乐观锁效果更好。比如C...原创 2019-09-12 00:13:21 · 362 阅读 · 0 评论 -
java内存模型--总结
1.java内存模型是什么?Java内存模型(Java Memory Model ,JMM)就是一种符合内存模型规范的,屏蔽了各种硬件和操作系统的访问差异的,保证了Java程序在各种平台下对内存的访问都能保证效果一致的机制及规范。Java内存模型规定了所有的变量都存储在主内存中,每条线程还有自己的工作内存,线程的工作内存中保存了该线程中是用到的变量的主内存副本拷贝,线程对变量的所有操作都必须在...原创 2019-09-09 23:35:17 · 74 阅读 · 0 评论 -
Java内存模型
为什么要有内存模型在介绍Java内存模型之前,先来看一下到底什么是计算机内存模型,然后再来看Java内存模型在计算机内存模型的基础上做了哪些事情。要说计算机的内存模型,就要说一下一段古老的历史,看一下为什么要有内存模型。内存模型,英文名Memory Model,他是一个很老的老古董了。他是与计算机硬件有关的一个概念。那么我先给你介绍下他和硬件到底有啥关系。CPU和缓存一致性我们应该都知道,...转载 2019-09-09 22:39:36 · 80 阅读 · 0 评论 -
java线程间的通信
一、wait和notify方法详解wait和notify方法并不是Thread特有的方法,而是Object中的方法,也就是说在JDK中的每个类都有这2个方法。1.下面是wait方法的三个重载方法:public final void wait() throws InterruptedExceptionpublic final void wait(long timeout) throw...原创 2019-07-10 01:59:32 · 85 阅读 · 0 评论 -
浅谈多线程编程中常用的几种锁
多线程运行的原理:每个程序就是进程,而每个进程中会有多个线程,而CPU是在这个写线程之间进行切换,多线程可以提高程序的运行效率,但是不能无限制的开线程。Thread种run()方法和start()方法的区别:run()方法只是普通方法的调用,不会新的线程,start()则会开启一个新的线程。一、synchronized 线程同步锁synchronized是java中的一个关键字...原创 2019-06-04 23:12:24 · 1639 阅读 · 0 评论