
JAVA多线程
文章平均质量分 81
Vicious_Sea
编码中唱歌最好,唱歌中做饭最棒,做饭中,编码最nice。
展开
-
JAVA多线程&线程池
JAVA多线程&线程池懂线程者,更胜于面试,更优于性能,与君共勉;线程进程和线程:一个进程包括多个线程。把视频软件理解为一个进程,而把视频+音频+弹幕可以理解为是视频软件中互相协作的三个线程;并行与并发:并行指的是多个线程同时执行各自的任务;并发则是指,单个线程抢占时间片,高速来回切换执行不同的任务。表面上多个线程持续运行,实际上单个线程走走停停。线程的状态1.1 new() ,创建线程,该线程进入新建状态;1.2 start(), 创建线程后,调用线程的start()方法原创 2022-05-08 11:50:05 · 537 阅读 · 0 评论 -
java-性能优化篇
java-性能优化篇因为一次公司倒闭,感悟到人生不容易,选择以物联网做副业,从事物联网卡代理,希望认识更多好朋友,合作共赢.(当你身上有了担子,你就会发现,收入来源太单一,会使你没有安全感!)公司项目已经完成阶段性上线,目前正在对残留的一些性能问题进行优化,今天针对优化过程中的一系列流程进行整理,希望能帮助到各位。我们单纯的先从软件层面出发(硬件的说实话,不是很good at)第一步:分析性能问题首先,可以依据类似听云这类全链路日志,可以看到整个接口的调用链路以及响应时间。每个sql语句的耗时原创 2022-03-10 00:13:26 · 1623 阅读 · 0 评论 -
ThreadLocal及其扩展
ThreadLocal及其扩展ThreadLocal是JDK提供的,是线程的本地变量,如果创建一个ThreadLocal变量,那么所有访问这个变量的线程都会有这个变量的一个本地副本。ThreadLocal可以理解为是一个全局的初始变量,但是每个线程访问该变量的后续操作,都是对自身副本的操作,规避了线程安全问题。一. ThreadLocal1.Thread,ThrealLocal,ThrealLocalMap的关系?[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F原创 2022-01-28 10:52:53 · 720 阅读 · 0 评论 -
异步任务读取不到已插入的数据
异步任务,一般使用于耗时的附加功能,如果在主方法的事务中向数据库插入数据,此时调用异步任务读取主事务插入的数据,可能会存在查询不到数据的问题。发生场景:上述场景中,主方法向用户表中插入数据,但是剩余的业务逻辑还未执行结束,此时开启一个异步线程,异步任务中的业务逻辑是读取主方法新增的user,并根据user的邮箱发送消息;此时如果主方法中的事务还未提交,那么异步任务中读取新增的user可能会出现读取不到的情况。解决方式:判断主方法中,业务执行结束并且事务提交过程需要多久,然后在异步方法中让线.原创 2021-07-31 12:10:40 · 4503 阅读 · 3 评论 -
JAVA锁-各种锁
前提了解:CAS算法:Compare And Swap(比较与交换),是一种无锁算法,设置到3个值:V(需要操作的内存值)、A(需要与操作的内存值进行比较的值)、B(写入的新值),只有当V=A的时候,才会将B更新到V;举个例子理解,当我们要重新设置某某账户的密码时,会让你输入原始密码验证是否正确,只有正确的时候,新密码才会设置成功;此处就是将手动输入的原始密码与数据库保存的原始密码匹配是否一致,如果一致,则更新新密码;如果更新失败,会循环读取比较CAS存在的问题:ABA问题。拿上述例原创 2021-07-19 22:55:20 · 488 阅读 · 0 评论 -
@Async异步任务
@Async异步任务在日常项目中经常会遇到一些耗时的附加功能,不影响程序主功能。比如说:发送邮件,下载Excel任务之类;如果需要用户在界面等待当前功能执行结束才能继续做接下来的操作,体验感时绝对很差的,这个时候,就需要开启异步任务,让用户无感知的进行操作。模拟不使用异步任务控制器代码//test控制器@RequestMapping("/user")@RestController@ResponseBodypublic class Controller { @Autowire原创 2021-06-23 13:23:29 · 309 阅读 · 0 评论