当前位置: 首页 > wzjs >正文

wordpress 整站源码上海远程教育网站设计与开发公司

wordpress 整站源码,上海远程教育网站设计与开发公司,企业网站建设方案范本,单位做核酸检测的通知Java面试周总结 JUC Synchronized是什么意思 有什么用 Synchronized是一个关键字,用于保证多线程访问资源的数据一致性。 如何使用Synchronized 修饰静态方法 public synchronized static void mathod() {}修饰静态代码块 synchronized(this) {//代码 }修饰方法…

Java面试周总结

JUC


Synchronized是什么意思 有什么用

Synchronized是一个关键字,用于保证多线程访问资源的数据一致性。


如何使用Synchronized

修饰静态方法
public synchronized static void mathod() {}
修饰静态代码块
synchronized(this) {//代码
}
修饰方法
public synchronized void mathod() {}

Synchronized可重入吗,如何实现

  • 答:Synchronized支持可重入。

Synchronized是基于原子性内部锁操作,底层原理通过操作系统mutex Lock实现,每个可重入锁都会关联一个线程ID和一个status。
当有线程进入Synchronized中时status会加1,当线程释放锁后status减1。当status为0后Synchronized修饰的部分解除占用。而此时非重入锁将会进入阻塞队列等待。


Synchronized锁升级

Synchronized锁划分

Synchronized一共划分四个等级:无锁、偏向锁、轻量级锁、重量级锁。

无锁

此时适用于单个线程执行任务的场景,没有资源抢占,也不会造成数据一致性问题。

偏向锁

适用于少量线程存在竞争关系的状态,简单来说就是Synchronized会偏向给上一次拿到锁并释放锁的线程再次加锁。当线程持有锁后会拿到线程ID,这个ID会去和MarkWord中的ID比较,若一致则加锁。

轻量级锁

适用于多个线程竞争但不激烈的情况。多个线程竞争资源时使用CAS进行加锁,拿到锁的线程执行任务。没有拿到锁的线程自旋等待。

重量级锁

线程竞争非常严重的情况。当多个线程都在自旋时会消耗计算资源,此时通过操作系统将自旋的线程挂起,需要使用线程的休眠唤醒机制。


Synchronized偏向锁为什么被废弃

  • 答:性能收益不明显,JVM代码维护成本太高

偏向锁仅仅在单线程访问同步代码块的场景中可以获得性能收益,若多个线程竞争则需要撤销偏向锁,而撤销偏向锁是非常耗费性能的。在撤销锁的过程中需要等待进入全局安全点,此时所有线程都是暂停的。


Synchronized锁住对象和锁住类有什么区别

  • 锁住实例对象
    当 synchronized 锁住实例对象时,它会锁定该对象的实例。
    这意味着在同一时间内,只有一个线程可以执行该对象的同步实例方法或同步代码块
  • 锁住类Class对象
    当 synchronized 锁住类的 Class 对象时,它会锁定该类的类对象。
    这意味着在同一时间内,只有一个线程可以执行该类的同步静态方法或同步代码块

Synchronized底层原理

Synchronized调用本地代码,通过C++实现monitor,其中有monitorEntry和monitorExit。当线程访问同步代码块时会从monitorEntry进入,执行完毕后从monitorExit退出


Synchronized可以保证内存可见性吗

  • 答:可以
内存可见性问题

计算机在执行程序时会先将数据从主存读入高速缓存中,执行完毕后又会从高速缓存中写入主存,其中的问题是上一个程序执行完成的数据没有来得及写回主存中时就被下一个程序读取,这个就是内存可见性问题。

Synchronized保证内存可见性

当线程进入同步代码块之前Synchronized会强制刷从主存读取新数据,保证数据是最新的,当执行完成后又会将执行完成的结果写回主存。

Synchronized为什么能保证原子性

Synchronized锁住方法和代码块,同一时间只能一个线程访问。


Synchronized和volatile的区别

作用域不同

Synchronized可以修饰方法静态方法静态代码块,volatile只能修饰变量

作用互补

一个是轻量级实现,性能好
一个是重量级实现,保证多个线程访问资源的同步性
volatile可以保证数据的可见性
synchronized可以解决多个线程之间访问资源的同步性,保证资源只有一个线程访问


Synchronized和ReentranLock的区别

所属层次

Synchronized是基于本地方法的系统级操作,是独占式悲观锁。ReentranLock则是JVM中提供的API接口操作。

http://www.dtcms.com/wzjs/783242.html

相关文章:

  • K12网站怎么建设注册公司网上申请入口
  • 手机移动网站模板上海海宏建设集团网站
  • 沈阳做招聘网站网络推广营销服务
  • 做网站空间500m多少钱自适应网站建设需要注意什么
  • 厦门网站流量优化价格内容营销
  • 小户型室内装修设计公司网站关于幼儿建设网站ppt
  • 什么网站可以免费做视频的软件有哪些微信 wordpress搜索
  • 代理彩票网站做链接学做网网站论坛
  • 如何找网站建设客户旅游网站有哪些功能
  • 有哪些做淘宝素材的网站工程建设资料员报名网站
  • 站群cms建站系统免费新网站没有死链接怎么做
  • vm虚拟化建设网站什么是网络营销定价的特点
  • 网站建设 优势西安wordpress建站
  • 付网站建设费如果做账网站页面设计模板代码
  • 天河网站建设公司排名北京海淀公司网站icp备案
  • 做花型设计哪个网站下载素材好免费咨询疾病的网站
  • 安徽建设银行官方网站关于重新建设网站的请示
  • 网站的首页设计wordpress主题 wiki
  • 铜川新区网站建设招标wordpress设置多域名多站点
  • 网站分析与优化网站设计要求
  • 深入网站开发和运维 pdf网站开发地图板块浮动
  • 如何用腾讯云建设自己网站注册公司需要注意什么事项
  • 餐饮o2o 网站建设数据网站怎么做的
  • 免费网站建设能做吗wordpress wp.net
  • 免费建立公司网站吉安网站推广徽hyhyk1
  • 网站搜索推广方案论文龙岩网站建设加盟
  • 网站运营的具体工作包括哪些网站建设运营费用预算
  • 做网站一般图片多大做微信请帖网站
  • 搜索网站怎么做的北京移动端网站开发
  • 如何进入wordpress数据库seo关键词排名优化工具