线程是否要锁住同步资源

  • 锁住 悲观锁
  • 不锁住 乐观锁

锁住同步资源失败 线程是否要阻塞

  • 阻塞
  • 不阻塞自旋锁,适应性自旋锁

多个线程竞争同步资源的流程细节有没有区别

  • 不锁住资源,多个线程只有一个能修改资源成功,其它线程会重试无锁
  • 同一个线程执行同步资源时自动获取资源偏向锁
  • 多个线程竞争同步资源时,没有获取资源的线程自旋等待锁释放 轻量级锁
  • 多个线程竞争同步资源时,没有获取资源的线程阻塞等待唤醒 重量级锁

4.多个线程竞争锁时是否要排队

  • 排队公平锁
  • 先尝试插队,插队失败在排队非公平锁

一个线程的多个流程能不能获取同一把锁

  • 能 可重入锁
  • 不能非可重入锁

多个线程能不能共享一把锁

  • 能 共享
  • 不能排他锁

悲观锁与乐观锁

悲观锁与乐观锁时一种广义的概念,体现的是看待线程同步的不同角度。

悲观锁

悲观锁认为自己在使用数据的时候一定有别的线程来修改数据,在获取数据的时候会先加锁,确保数据不会被别的线程修改。 锁实现:synchronized 接口Lock的实现类 适用场景:写操作多,先加锁可以保证写操作时数据正确。

乐观锁

乐观锁认为自己在使用数据时不会有别的线程修改数据,所以不会添加锁,只是在更新数据的时候去判断之前有没有别的线程更新了这个数据。 锁实现:CAS算法,例如AtomicInteger类的原子自增时通过CAS自旋实现。 适用场景:读操作较多,不加锁的特点能够使其读操作的性能大幅度提升。 乐观锁的执行流程: 线程A获取到数据以后直接操作,操作完数据以后准备更新同步资源,更新之前会先判断内存中同步资源是否被更新: 1.如果没有被更新,更新内存中同步资源的值。 2.如果同步资源被其他线程更新,根据实现方法执行不同的操做(报错or重试)。

CAS算法

全名:Compare And Swap(比较并交换) 无锁算法:基于硬件原语实现,在不使用锁(没有线程被阻塞)的情况下实现多线程之间的变量同步。 jdk中的实现:java.util.concurrent包中的原子类就是通过CAS来实现了乐观锁。 算法涉及到的三个操作数:

需要读写的内存值V
进行比较的值A
要写入的新值的B

CAS存在的问题

1.ABA问题 线程1准备用CAS将变量的值由A替换为B,在此之前,线程2将变量的值由A替换为C,又由C替换为A,然后线程1执行CAS时发现变量的值仍然为A,所以CAS成功。但实际上这时的现场已经和最初不同了,尽管CAS成功,但可能存在潜藏的问题。 举例:一个小偷,把别人家的钱偷了之后又还了回来,还是原来的钱吗,你老婆出轨之后又回来,还是原来的老婆吗?ABA问题也一样,如果不好好解决就会带来大量的问题。最常见的就是资金问题,也就是别人如果挪用了你的钱,在你发现之前又还了回来。但是别人却已经触犯了法律。 但是jdk已经解决了这个问题。 想追下源码来着,但是一追发现直接到c了。

2.循环时间长开销大 3.只能保证一个共享变量的原子操作

最后总结

ActiveMQ+Kafka+RabbitMQ学习笔记PDF

  • RabbitMQ实战指南

  • 手写RocketMQ笔记

  • 手写“Kafka笔记”

关于分布式,限流+缓存+缓存,这三大技术(包含:ZooKeeper+Nginx+MongoDB+memcached+Redis+ActiveMQ+Kafka+RabbitMQ)等等。这些相关的面试也好,还有手写以及学习的笔记PDF,都是啃透分布式技术必不可少的宝藏。以上的每一个专题每一个小分类都有相关的介绍,并且小编也已经将其整理成PDF啦

tMQ)等等。这些相关的面试也好,还有手写以及学习的笔记PDF,都是啃透分布式技术必不可少的宝藏。以上的每一个专题每一个小分类都有相关的介绍,并且小编也已经将其整理成PDF啦

资料领取方式:戳这里免费领取

初面蚂蚁金服,java商城项目经验简历相关推荐

  1. 2021 阿里巴巴和蚂蚁金服 Java实习生 面试经验贴(重要!!!)

    最近面了蚂蚁金服集团的Java实习生,遗憾的是在第三面的时候挂了,不过还是希望能在此博客跟更多人分享我的经验,跟大家一起成长! 由于论文未按照我原本的计划投出去,备战实习的时间被耽搁了,于是乎,从今年 ...

  2. java内存shell_2019蚂蚁金服Java后端三面,详述程序员必须掌握的架构底层原理

    前面的话 告别了2018 ,也早已正式进入2019 面试一直都是大家关注的热门话题,俗话说"金三银四",如今已经是三月份了,如果你打算在年后跳槽,那么是时候该着手准备了 很多Jav ...

  3. 拼多多、饿了么、蚂蚁金服Java面试题大集

    自己当初找工作时参加过众多一线互联网公司的Java研发面试,这段时间处于寒冬,然而前几天跳槽找工作,两天面了3家,已经拿了两个offer,觉得可以和大家分享下: 下面为拼多多.饿了么.蚂蚁金服.哈啰出 ...

  4. 阿里、腾讯、蚂蚁金服Java技术面试及经验总结(文末分享答案)

    在过去很长一段时间内,国内互联网一直处于三足鼎立状态,BAT即百度.阿里巴巴.腾讯.而在最新的互联网企业价值榜上,百度却被蚂蚁金服挤出前三的位置. 能够进一线互联网公司,是大部分程序员奋斗的目标,有很 ...

  5. 2019社招阿里、腾讯、蚂蚁金服Java面试真题

    在过去很长一段时间内,国内互联网一直处于三足鼎立状态,BAT即百度.阿里巴巴.腾讯.而在最新的互联网企业价值榜上,百度却被蚂蚁金服挤出前三的位置. 能够进一线互联网公司,是大部分程序员奋斗的目标,有很 ...

  6. 阿里、腾讯、蚂蚁金服Java技术面试及经验总结

    在过去很长一段时间内,国内互联网一直处于三足鼎立状态,BAT即百度.阿里巴巴.腾讯.而在最新的互联网企业价值榜上,百度却被蚂蚁金服挤出前三的位置. 能够进一线互联网公司,是大部分程序员奋斗的目标,有很 ...

  7. 蚂蚁金服—JAVA实现全排列

    分享一道蚂蚁金服JAVA实现全排列的代码 在这里插入代码片 package com.lyz.dataStructure.LeetCode;import java.util.List; import j ...

  8. 大牛分享,献出这份年薪68W的蚂蚁金服Java高级开发封神宝典!

    超级大牛经验分享,献出这份年薪68W的蚂蚁金服Java高级开发封神宝典! 干货奉上,不喜勿喷: 一.源码阅读 1.常用设计模式 2.Spring 5 源码 3.MyBatis源码 二.分布式架构总纲 ...

  9. 蚂蚁金服Java岗三面(电面.现场面.HR面)经验总结和分享

    面试内容如下: 一. 电面: 1.自我介绍 2.项目情况: (1.)对你来说影响最大的一个项目(该面试中有关项目问题都针对该项目展开)? (2.)为什么会想做这个项目?这个项目的ideal是谁提出来的 ...

  10. 最新蚂蚁金服Java面试题:Docker+秒杀设计+RocketMQ+亿级数据设计

    蚂蚁金服一面: 1 自我介绍 2 讲一下ArrayList和linkedlist的区别,ArrayList的扩容方式,扩容时机. 3 hashmap的实现,以及hashmap扩容底层实现. 4 NIO ...

最新文章

  1. java字节对齐 32 64_【C语言】字节对齐问题(以32位系统为例)
  2. C++中关于流的概念
  3. fedora17 的 rc.local
  4. Springboot 日志、配置文件、接口数据如何脱敏?老鸟们都是这样玩的!
  5. python两列相乘_如何将pandas中具有不同索引的两列相乘?
  6. 诗与远方:无题(十六)
  7. Python 资源库大全
  8. 头条搜索已经全面上线,会不会成为下一个流量风口
  9. F1060 IPV6 BGP4+与静态路由重分布典型组网配置案例
  10. 【ROS学习笔记】(八)服务数据的定义与使用
  11. 在layui layer 弹出层中加载 layui table
  12. 民间借贷红线大幅下调,二手车平台去金融化将成趋势?
  13. 鸿蒙媒体子系统解读-编码录像流程解读
  14. 教你添加百度分享按钮
  15. vba 冻结窗格_在VBA中进行调试-2A)代码窗格(F7)
  16. 微信开发之——接口调用频率xianzh
  17. WPF基础系列二:控件简介
  18. WebSpider蓝蜘蛛网页抓取工具5.1用户手册
  19. xp无法访问win7计算机,解决XP不能访问win7共享文件的方法
  20. C++字符输入方式详解

热门文章

  1. html 倒计时弹出框,alert警告框倒计时
  2. 【前端】弹出框提交表单
  3. M2Det: A Single-Shot Object Detector based on Multi-Level Feature Pyramid
  4. cleverhans库——FGSM代码实战
  5. PHP:错误控制运算符
  6. 计算机领域车牌识别,城市智慧停车的智能眼睛——车牌识别系统
  7. 基于EEG的睡眠分期算法记录3-使用决策树多类支持向量机的自动睡眠阶段分类
  8. InfoPath2003 教程
  9. 人肉搜索将被禁止,大家要保护好自己的个人信息!
  10. 基于javaweb+jsp的员工绩效考核管理系统(JavaWeb JSP MySQL Servlet SSM SpringBoot Bootstrap Ajax)