
java并发
文章平均质量分 72
ignorewho
笑你我枉花光心计 爱竞逐镜花那美丽
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JAVA并发-Monitor简介
什么是Monitor?1.Monitor是一种用来实现同步的工具2.与每个java对象相关联,即每个java对象都有一个Monitor与之对应3.Monitor是实现Sychronized(内置锁)的基础Monitor的基本结构是什么?1.Owner字段:初始时为NULL表示当前没有任何线程拥有该monitor record,当线程成功拥有该锁后保存线程唯一标识,当锁被释放时又设置为NULL2.E...原创 2018-06-29 11:39:27 · 12581 阅读 · 1 评论 -
JAVA并发-终止线程小结
前言:前面我们对线程的中断机制有了一定了解,线程中断机制可以在某些情况下可以实现线程的终止,使线程进入TERMINATED状态,但是线程的终止方法不止于这一种,为了更好地了解线程的终止,通过自己写代码并学会了如何优雅地终止线程。 通过搜集一些网上资料,大多数提到的就是常用的三种方法:1.通过设置标志位,线程通过判断标志位的方式来终止线程2.调用线程的中断方法,设置中断状态,线程...原创 2018-07-18 13:31:59 · 183 阅读 · 0 评论 -
JAVA并发-sychronized优化
接着上一篇:JAVA并发-sychronized原理既然学习了一波原理,也晓得sychronized后续是被优化过的,所以今天就研究下sychronized优化机制,学习是一个循序渐进的过程,让我们出发吧!!!sychronized优化前是怎样的?1.我们知道sychronized锁操作底层是基于对Monitor的操作实现的,Monitor底层又是基于Mutex Lock即互斥锁2.互斥锁的加锁指...原创 2018-07-05 16:50:22 · 394 阅读 · 0 评论 -
JAVA并发-sychronized和Lock的简单区别
sychronized:java内置特性,不需要手工释放锁,功能较为单一,是一种非公平可重入锁Lock:java并发包下的接口,功能较为齐全,使用更加灵活,但需要手工释放锁,其中ReentrantLock支持公平锁和非公平锁并且是可重入锁...原创 2018-05-24 08:36:44 · 273 阅读 · 0 评论 -
JAVA并发-volatitle简介
作用:具有synchronized的可见性特性,但是不具备原子特性,可以看成是一种轻量级的同步机制,编码较少,开销也小应用场景:在有限的场景下替代锁,必须满足两个条件:一、变量的修改不依赖于当前值 二、该变量没有包含在具有其他变量的不变式中,简而言之:volatitle变量修改的值独立于程序的任何状态,包括变量的当前值。原理:处理器将修改后的值立即刷新到主内存,其他处理器内存中的值被置无效,然后从...翻译 2018-05-23 16:26:16 · 227 阅读 · 0 评论 -
JAVA并发-各种锁类型
悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作乐观锁:假定不会发生并发冲突,只在提交时检查是否违反数据完整性的操作java中的悲观锁和乐观锁:java的独占锁就是一种悲观锁,例如sychronized、lock,缺点:存在进程频繁挂起和恢复的性能消耗java的CAS就是乐观锁的一种应用,每次操作都不加锁,假设没用冲突去完成操作,发生冲突就重试,直到成功为止,但是使用CAS要注意一个问...原创 2018-05-23 16:24:03 · 550 阅读 · 1 评论 -
JAVA并发-死锁分析
分析死锁步骤:1.通过jps命令找出java线程id2.通过jstack -l pid > test.txt,将堆栈信息打印到文件3.查看堆栈信息中状态为Blocked阻塞状态的线程,分析其正在请求哪个锁并锁住了哪个对象,然后看这个锁被哪个线程持有并查看该线程在请求哪个锁,如此循环就会发现形成一个环,可以分析出是哪个锁使用出了问题避免死锁的处理方式:1.线程按一定顺序加锁2.线程在获取锁时可...原创 2018-05-23 16:21:52 · 169 阅读 · 0 评论 -
JAVA并发-如何提升效率
首先确认并发访问的瓶颈在哪?1.网络带宽不够2.web线程连接数不够3.数据库查询性能达不到根据不同情况,确认解决办法1.增加网络带宽,DNS域名解析分发多台服务器2.负载均衡,前置代理服务器nignx、apache3.数据库查询优化,读写分离,分表分区使用缓存,例如:memcached,本地缓存...原创 2018-05-23 16:20:15 · 1117 阅读 · 0 评论 -
JAVA并发-ReentrantLock怎么实现非公平锁和公平锁
非公平:1.调用lock()方法时,首先去通过CAS尝试设置锁资源的state变量,如果设置成功,则设置当前持有锁资源的线程为当前请求线程2.调用tryAcquire方法时,首先获取当前锁资源的state变量,如果为0,则通过CAS去尝试设置state,如果设置成功,则设置当前持有锁资源的线程为当前请求线程以上两步都属于插队现象,可以提高系统吞吐量公平:1.调用lock()方法时,不进行CAS尝试...原创 2018-05-23 16:17:53 · 2827 阅读 · 0 评论 -
JAVA并发-线程中断机制
前言:之前在看Thread源码的时候,看到interrupt相关的方法,回想之前一直经常遇到的InterruptedException,于是决定好好了解一下interrupt机制,这就是我们经常提起的线程中断机制,以前遇到中断异常时,经常性地忽略该异常,其实这是一种很不负责的做法,在深入学习了中断机制后,明白了中断也是一种很重要的处理机制那么什么是中断机制?1.中断是一种协作机制,既然是协作...原创 2018-07-09 16:30:08 · 445 阅读 · 0 评论 -
JAVA并发-探究sychronized底层实现原理
前言:之前一直对sychronized的原理不是特别清楚,只知道在jdk1.6之前使用sychronized锁性能较低,后续进行了优化,加入了偏向锁、自旋等机制来提高sychronized性能,但是抱着模棱两可的心态总是很受的,于是特意学习了一波,充实自己,也分享于大家,本文主要是对sychronized特性以及实现原理进行剖析,本文会以代码结合反编译字节码的形式来进行分析简介:1.sychron...原创 2018-07-02 17:51:05 · 655 阅读 · 2 评论 -
JAVA并发-验证sychronized锁升级、降级
前言:也许有些东西不去验证不去探索,终究还只是资料,变不成知识,人生漫漫,见到的很多,知道得很少,精力有限,做个知道的人,哪怕知道那么一点也可以.先贴一张synchronized锁图,下面通过实验来验证下该图描述是否正确。相关信息:1.主要工具:jdk自带HSDB工具,HSDB具体是啥,我百度下:HSDB则是在SA基础上包装起来的一个调试器,至于SA是啥,再百度下:是个非常便于探索H...原创 2019-01-27 07:57:38 · 882 阅读 · 1 评论