最新文章列表

什么情况下Java程序会产生死锁?如何定位和修复死锁

死锁是一种特定的程序状态,在实体之间,由于循环依赖导致彼此一直处于等待之中,没有任何个体可以继续前进。死锁不仅仅是在线程之间会发生,存在资源独占的进程之间同样也可能出现死锁。通常来说,我们大多是聚焦在多线程场景中的死锁,指两个或多个线程之间,由于相互持有对方需要的锁,而永久处于阻塞的状态。   定位死锁最常见的方式就是利用jstack等工具获取线程栈,然后定位相互之间的依赖关系,进而找到死锁 ...
hbxflihua 评论(0) 有1497人浏览 2019-04-18 20:38

浅谈Java中的锁:Synchronized、重入锁、读写锁

Java开发必须要掌握的知识点就包括如何使用锁在多线程的环境下控制对资源的访问限制 ◆ Synchronized ◆ 首先我们来看一段简单的代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 public class NotSyncDemo { public sta ...
javenshi 评论(0) 有465人浏览 2019-03-26 10:17

Java并发锁机制

       在进行多线程编程时,经常遇到多个线程同时对一个变量进行修改的问题。这时候为了保证不出现意想不到的结果,需要为这些变量加锁,以保证同一时刻只有一个线程能够修改。       在Java语言中,为了解决这种同步互斥的访问,有两种方法:synchronized和Lock. 1,synchronized       synchronized是Java语言中的一个关键词,是Java语言 ...
fly_ever 评论(0) 有726人浏览 2018-08-11 21:32

JVM对锁的优化

锁优化   自旋锁 共享数据的锁定状态只会持续很短的一段时间,为了这段时间去挂起和恢复线程并不值得。 如果物理机器有一个以上的处理器,能让两个或以上的线程同时并行执行,我们就可以让后面请求锁的那个线程“稍等一下”,但不放弃处理器的执行时间,看看持有锁的线程是否很快就会释放锁。 为了让线程等待,我们只需让线程执行一个忙循环(自旋),这项技术就是所谓的自旋锁。 自旋等待不能代替阻塞,自旋等待本 ...
HNUlanwei 评论(0) 有668人浏览 2018-05-02 17:07

java并发AQS原理之ReentrantLock

  看本文建议结合源码   首先来看看ReentrantLock的构造方法,它的构造方法有两个,如所示: public ReentrantLock() {     sync = new NonfairSync(); } public ReentrantLock(booleanfair
哎喔别走 评论(0) 有637人浏览 2018-04-26 18:09

使用redis把队列的异步返回改成同步 - 队列使用

web编程开发中,会遇到资源争用的情况。举例: 有多个商品,商品抢单,每个商品都有数量限制。 但凡遇到此类问题,自古以来,就有两种解决方式:1、使用锁,2、使用队列。 使用任意一个就可以。 使用队列的方式最为简单,不考虑加锁。也无需使用数据库的锁。 把所有的请求都放入队列,然后把队列处理的结果返回给客户端。每次都查询商品的剩余数量是否为0,为0就拒绝请求。 如果商品太多,可以按商品大类分成 ...
xieye 评论(0) 有4192人浏览 2018-01-24 11:16

锁的实现原理

 锁在多线程中是必不可少的,他给多线程提供了同步的功能,让多线程可以互斥的执行同步块,并具有可见性。  本文将从happens-before关系出发,结合ReentranLock源码,如何用内存屏障、CAS操作、LOCK指令实现锁的功能。 锁的happens-before关系 happens-before规则 程序顺序规则:在一个线程中,前面的操作happens-before后面的 ...
noble510520 评论(0) 有2845人浏览 2017-12-26 14:23

数据库之乐观锁与悲观锁

乐观锁 乐观锁是一种思想,是给数据库表添加一个字段(数据库默认会给表添加一个版本号字段),在更新数据之前会先读取这个字段,更新缓存数据到表中时,再去检查这个字段是否在此期间被其他程序操作过, 如果这个字段被修改过,那么就拒绝更新,此次操作失败。 悲观锁是一种读写期间阻止其操作修改的锁, 乐观锁和悲观锁适用主要还是看业务场景,而不能天真的认为一个好于另一个,乐观锁主要用于写操作少读操作多的场 ...
探索者_技术 评论(0) 有473人浏览 2017-09-14 14:53

Innodb中的事务隔离级别和锁的关系(转发 来自美团ameng )

Innodb中的事务隔离级别和锁的关系(转)
robustwang 评论(0) 有760人浏览 2017-07-31 17:39

java多线程(七)

目前在Java中存在两种锁机制:synchronized和Lock,Lock接口及其实现类是JDK5增加的内容。本文并不比较synchronized与Lock孰优孰劣,只是介绍二者的实现原理。 ...
万小翼 评论(0) 有1606人浏览 2017-07-12 23:54

java多线程(六)

9、悲观锁       悲观锁,就是不管是否发生多线程冲突,只要存在这种可能,就每次访问都加锁,加锁就会导致锁之间的争夺,有争夺就会有输赢, ...
万小翼 评论(0) 有447人浏览 2017-07-11 23:32

java多线程(五)

5、读写锁 相比Java中的锁(Locks in Java)里Lock实现,读写锁更复杂一些。假设你的程序中涉及到对一些共享资源的读和写操作,且写操作没有读操作那么频 ...
万小翼 评论(0) 有567人浏览 2017-07-09 20:25

core java interview point (2)

接上篇(1)   11. HashMap和ConcurrentHashMap的区别,HashMap的底层源码。  HashMap是键值对形式的集合map,是由数组和链表数据结构。ConcurrentHashMap是线程安全的HashMap“再包装”,是由一些列的Segment标签标注的HashMap。  具体的讲解请参照我的博客《HashMap和ConcurrentHashMap的区别, ...
flycw 评论(0) 有351人浏览 2017-06-10 22:05

mysql-索引和锁(何登成的分享转载)

  其他重要参考 http://blog.csdn.net/xifeijian/article/details/20313977#t10 1    背景    1
王新春 评论(0) 有747人浏览 2017-05-14 16:41

Java中的锁

一.按照锁的监听器划分对象锁/类锁  (以synchronized举例)   本文主要是将synchronized关键字用法作为例子来去解释Java中的对象锁和类锁。特别的是希望 ...
yjph83 评论(0) 有530人浏览 2017-04-27 12:55

ReentrantReadWriteLock/ReentrantLock 重入锁

转自:http://blog.csdn.net/vking_wang/article/details/9952063 (【Java线程】锁机制:synchronized、Lock、Condition)   一.ReentrantReadWriteLock(读写锁)的使用 Lock比传统线程模型中的synchronized方式更加面向对象,与生活中的锁类似,锁本身也应该是一个对象。两个线程执行 ...
yjph83 评论(0) 有1041人浏览 2017-04-21 16:36

java-jvm-jstack-线程状态

常见的线程状态: RUNNABLE:正在执行的线程 注意:这里执行是针对jvm来说的,并非真的在cpu上执行,这要看操作系统处理器是否有机会     BLOCKED:阻塞的线程 注意:阻塞的线程一般是拿不到监视器锁(a monitor lock),比如:synchronized block/method,ReentrantLock.lock()   jstack一般显示为: & ...
王新春 评论(0) 有2618人浏览 2017-03-31 14:42

MySQL MyISAM与表锁

MySQL MyISAM与表锁   在数据库中,除了CPU、内存、IO等的争用外,数据也是一种供许多用户共享的资源,如何保证数据并发的一致性、有效性是所有数据库必须解决的问题,锁冲突也是影响数据库并发性能的一个重要因素。MySQL中不同的存储引擎之间的锁机制不一定相同,例如MyISAM和MEMORY采用的是表锁,BDB采用的是页面锁,但野支持表锁,InnoDB默认是行锁,但也支持表锁。   ...
莫名的拉风 评论(0) 有4968人浏览 2017-01-11 15:15

最近博客热门TAG

Java(141747) C(73651) C++(68608) SQL(64571) C#(59609) XML(59133) HTML(59043) JavaScript(54918) .net(54785) Web(54513) 工作(54116) Linux(50906) Oracle(49876) 应用服务器(43288) Spring(40812) 编程(39454) Windows(39381) JSP(37542) MySQL(37268) 数据结构(36423)

博客人气排行榜

    博客电子书下载排行

      >>浏览更多下载

      相关资讯

      相关讨论

      Global site tag (gtag.js) - Google Analytics