java学习——java面试【事务、锁、多线程】资料整理

成长之路,一起走!总结一些知识,方面自己学习,也方面热爱学习的伙伴们可以更好的成长! 项目直接是静态的Html,下载后可以直接访问! 地址:https://github.com/dufyun/kuyu/tree/master/kuyuTechHtml

大家好,又见面了,我是全栈君。

成长之路,一起走!总结一些知识,方面自己学习,也方面热爱学习的伙伴们可以更好的成长!
项目直接是静态的Html,下载后可以直接访问!
地址:https://github.com/dufyun/kuyu/tree/master/kuyuTechHtml

1、JAVA中有哪些锁的关键字,请分别描述下各自的特点?
http://www.tuicool.com/articles/NnQjyq
http://blog.csdn.net/smcwwh/article/details/7193666

1)Sychronized 同步,并发锁
    可以加在方法和代码块上,但是要注意区分 “static”
    (2)java.util.concurrent.locks下的锁实现同步 
        a:可重入的锁ReentrantLock
            使用Lock的时候,lock与unlock一定要配对。
        b:可重入的读写锁ReentrantReadWriteLock
            没有writer,读取锁可以由对个reader线程同时保持,而写入锁定是独占的。

2、synchronized有哪些用法,请举例说明?

可以对方法和代码代码块进行同步,用法对类或者对象上锁。同步!

3、什么是死锁,死锁发生的条件有哪些,请用文字以及图解说明?

    至少两个线程等待对方持有的锁,无限的循环下去!

4、死锁如何避免,可用代码举例说明?

1)主要原因是嵌套封锁的使用!2)无限等待对方持有的锁,让等待时间有个上限。
(3)设计代码的时候,程序每次只能获取一个锁。

5、活锁和饥饿如何理解,可用文字及图解说明?

    活锁和锁么有太大关系,是一种形象的比喻。
    饥饿:一个线程因为cpu时间被被其他线程全部抢走而得不到cpu运行时间

6、多线程中专门用于处理线程锁的是哪个子包?

java.util.concurrent

7、多线程中如何保证锁对象可以被解锁

 finally unlock(); 其他的没有想到!

8、多线程中专门用于处理线程锁的子包与synchronized关键字最大的区别是什么?

    synchronized是关键字,线程锁的子包是类。是的类换,就可以更灵活地使用锁的特性!可以被继承等

9、多线程中的锁,应该位于哪个层面?

业务代码层面,service
锁:分对象锁和类锁。 常见的mvc模型中 dao层基本上是不用你去管锁的问题的。数据库基本帮你搞定了。 
倒是可以对某些service加一些必要的锁保证业务调用的的一致性。 这是我的理解。

10、两个线程执行的代码片段要实现同步互斥的效果,有什么要求?
java多线程与线程并发二:线程互斥:http://www.cnblogs.com/bailiyi/p/3619983.html

    代码片段一次只能被一个线程使用,互斥的线程必须使用同一个对象上锁!
    同步是一种更为复杂的互斥,而互斥是一种特殊的同步。

  也就是说互斥是两个线程之间不可以同时运行,他们会相互排斥,必须等待一个线程运行完毕,
  另一个才能运行,而同步也是不能同时运行,但他是必须要安照某种次序来运行相应的线程(也是一种互斥)!

  总结:

  互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。
  但互斥无法限制访问者对资源的访问顺序,即访问是无序的。

  同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。
  在大多数情况下,同步已经实现了互斥。

11、数据库锁的概念是什么?

对数据库中数据对象进行加锁,防止并发或者多用户操作破坏数据库数据的不一致性。
因为可能存在多个事务同时存取同一数据的情况。

12、数据库锁有哪些分类?

共享锁:多个事务可查看,不能修改
排它锁:只有一个事务封锁,其他不能进入,只能等待X锁释放才能访问。
更新锁:用来锁定修改的资源。防止共享锁导致的死锁现在!
共享锁修改数据两步:获得共享锁,升级为排它锁,在修改数据。

13、数据库锁的粒度体现在哪些方面,各自有什么特点?

小-行:增大并发量,开销也大,维护锁多
大-表:降低并发量,开销低,维护锁少!

14、事务的概念是什么,有哪些基本属性?

数据库管理系统 - 逻辑单位-有限的操作序列!
ACID属性:
Atomicity : 原子性
Consistency:一致性
Isolation:隔离线
Durability:持久性

15、事务有哪几种隔离级别,请从弱到强分别类举说明?

1:Read Uncommitted(读未提交):一个事务可以读取另一个未提交事务的数据。
2:Read Committed(读提交):一个事务要等另一个事务提交后才能读取数据。可以update 3:Repeatable Read(重复读):在开始读取数据(事务开启)时,不再允许修改操作。不可以update,可以insert 4:Serializable(序列化):Serializable 是最高的事务隔离级别,在该级别下, 事务串行化顺序执行,可以避免脏读、不可重复读与幻读。

16、在事务的并发操作中,可能出现的情况是哪些?

脏读,不可重复读,幻读

17、大多数数据库默认的事务隔离级别是哪个?MySql的是否一样,如果不一样请指出?

MySql: Repeatable Read
其他的Sqlservice,oracle : read committed 

18、结合Spring谈谈你对事务传播性的理解(文字和图解都可以)?

    在ssh开发中,我们一般将事务设置在Service层,当调用service一个方法进行数据库的操作时候
能够保持我们使用的操作在一个事务中。
    如果在本service层中除了调用了Dao层方法,还调用其他类的service层方法,
此时必须要保证调用的Service层的方法和我本身的方法在同一事务中,否则不能保证事务的一致性。
此时就出现了事务的传播问题。Spring大多数情况使用 PROPGATION_REQUIRED:如果存在一个事务,
则支持当前事务,没有事务则开启新的事务。

19、Spring的事务控制有哪两个主要特性,请分别简单说明?

传播级别和数据隔离级别!
传播级别定义的是事务的控制范围,事务隔离级别定义的是事务在数据库读写方面的控制范围。

20、Spring的事务框架设计理念的基本原则是什么?它有哪些事务管理方式,请分别说明下?

理念:让事务管理的关注点与数据访问的关注点相互分离。
方式:
(1)编程式事务
(2)声明式事务


如果帅气(美丽)、睿智(聪颖),和我一样简单善良的你看到本篇博文中存在问题,请指出,我虚心接受你让我成长的批评,谢谢阅读!
祝你今天开心愉快!


欢迎访问我的csdn博客,我们一同成长!

不管做什么,只要坚持下去就会看到不一样!在路上,不卑不亢!

博客首页http://blog.csdn.net/u010648555

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/121197.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 无类路由计算方法_actin

    无类路由计算方法_actin给定一个包含 n 个点 m 条边的有向图,并给定每条边的容量和费用,边的容量非负。图中可能存在重边和自环,保证费用不会存在负环。求从 S 到 T 的最大流,以及在流量最大时的最小费用。输入格式第一行包含四个整数 n,m,S,T。接下来 m 行,每行三个整数 u,v,c,w,表示从点 u 到点 v 存在一条有向边,容量为 c,费用为 w。点的编号从 1 到 n。输出格式输出点 S 到点 T 的最大流和流量最大时的最小费用。如果从点 S 无法到达点 T 则输出 0 0。数据范围2≤n≤50

    2022年8月9日
    9
  • C语言-用栈实现表达式求值(顺序栈)[通俗易懂]

    C语言-用栈实现表达式求值(顺序栈)[通俗易懂]函数目录:栈的基本操作:创建栈并初始化(create)入栈(push_in)出栈(pop_out)取栈顶元素(GetTop)优先级函数(Precede)求值函数(Operate)判断操作符函数(In)表达式求值函数(evaluateExpression)其他:操作符栈(OPTR),操作数栈(OPND)谈谈我遇到的问题:1.该选择数字栈还是字符栈?运算数是整型…

    2022年6月16日
    31
  • 万能乘法速算法大全_小学数学加减乘除【速算法】都在这里! 寒假让孩子练一练…

    万能乘法速算法大全_小学数学加减乘除【速算法】都在这里! 寒假让孩子练一练…★需要电子版资料可直接拉至文末查看领取方式哈!小果老师说:很多小朋友的寒假生活已经开启啦!寒假的确可以好好玩一玩,但某种程度上该学习还是的学习一些的!因此,今天小果老师要给大家分享的内容是数学速算法,这些内容掌握以后就几乎不用担心那些简便运算没头绪啦!赶紧来看看然后为孩子收藏起来吧!01加法的神奇速算法一、加大减差法口诀前面加数加上后面加数的整数,减去后面加数与整数的差等于和。例题1376+98…

    2022年6月5日
    34
  • setContentView流程

    setContentView流程1、activity、window、DecorView、ViewRoot之间的预备知识activityactivity是Android的四大组件之一,负责控制activity的生命周期和处理事件,负责视图的添加与显示,以及通过一些回调方法与window和View进行交互。一个activity包含一个window,window才是真正的窗口WindowWindow是一个抽象类,它真正的实现类是PhoneWindow。Window通过WindowManager加载一个DecorView到Window中,

    2022年6月26日
    32
  • pycharm界面颜色设置_Excel护眼色打印

    pycharm界面颜色设置_Excel护眼色打印首先打开菜单file下的setting设置:然后找到editor中的general3.然后点击图标最上面的saveas创建第二个默认设置:4.接下来再下面的对话框中找到defaulttext并将background和foreground对话框打勾:5.对background进行颜色设定:6.对foreground进行设计:7.最后点击最下面的apply和ok即…

    2022年8月26日
    9
  • python中文件的写入_python列表写入txt文件

    python中文件的写入_python列表写入txt文件1.自己写入txt直接上核心代码:withopen(“douban.txt”,”w”)asf:f.write(“这是个测试!”)12这句话自带文件关闭功能,所以和那些先open再write再close的方式来说,更加pythontic!结果就是这样:2.将文件输入(print)的内容写入txt我并不喜欢手写字符,更多时候用到的就是将程序跑出来的print写到txt中保存,比如

    2022年10月2日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号