资讯详情

Synchronized和Lock的区别

1.synchronized而且是关键词lock是一个接口(lock、lockInterruptibly、tryLock、unlock、newCondition)。 2.synchronized是隐式加,lock加锁显示。 3.synchronized它可以作用于方法和代码块,lock只能作用于代码块。 synchronized作用于静态方法上锁的是当前类别class,目前的对象作用于普通方法上锁。 在javap反编译成字节码后,synchronized关键字需要一个代码块进入点monitorenter,代码块退出和代码块异常出口点monitorexit。 4.synchronized是阻塞式加锁,而lock中的trylock支持非阻塞式加锁。 5.synchronized而且,没有超时机制lock中的trylcok可支持超时机制。 6.synchronized不可中断,而lock中的lockInterruptibly可中断获取锁。(ReentrantLock.lockInterruptibly允许其他线程在等待时调用等待线程Thread.interrupt该方法中断等待线程的等待并直接返回。此时,不需要获得锁,而是抛出一个InterruptedException。 ReentrantLock.lock方法不允许Thread.interrupt即使检测到中断Thread.isInterrupted,也会继续尝试获得锁,失败会继续休眠。最终获得锁成功后,将当前线程视为interrupted状态,然后中断线程。) 7.synchronized采用的是monitor对象监视器,lock底层原理是AQS 8.synchronized只有一个同步队列和一个等待队列lock有一个同步队列,可以有多个等待队列。 同步队列:排队取锁线程所在的队列。 等待队列:调用 wait 线程将从同步队列转移到等待队列。 9.synchronized是非公平锁,而lock可以是公平锁,也可以是非公平锁。 10.synchronized用object的notify唤醒方法,而lock用condition进行唤醒。 11.lock有ReadWriteLock支持并发读。

标签: mo高压共轨传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

 锐单商城 - 一站式电子元器件采购平台  

 深圳锐单电子有限公司