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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python正则匹配汉字「建议收藏」

    python正则匹配汉字的规则为:[\u4e00-\u9fa5]后面可以加一个+,匹配多个汉字。例子如下:print(re.findall(r'[\u4e00-\u9fa5]+’,’这是测试用例’))

    2022年4月11日
    51
  • 零基础学Java(12)静态字段与静态方法

    零基础学Java(12)静态字段与静态方法静态字段与静态方法之前我们都定义的main方法都被标记了static修饰符,那到底是什么意思?下面我们来看看静态字段如果将一个字段定义为static,每个类只有一个这样的字段。而对于非静态的实例

    2022年7月29日
    6
  • 学生选修课管理系统课程设计_学生选修课程系统设计报告

    学生选修课管理系统课程设计_学生选修课程系统设计报告一、课程设计任务完成学生选课管理系统的开发二、需求描述本系统是一个单机版的小型的学生选课管理系统,在本系统中,开发了一个面向管理员、学生和教师这三个对象的教务平台,对学生提供的服务有登录、选课、、修改登录密码、和查询成绩这几个服务,所选课程总数不能超过3门;对教师提供的服务有登录、修改登录密码和登录成绩;对管理员提供的服务有登录开设学生和教师帐号、删除学生和教师帐号的服务。三、系统总体设计1.系统架构设计(1)架构:单机(2)运行软件环境:windowsXPSP3、jdk

    2022年10月10日
    3
  • 802.1ag CFM/802.3ah EFM OAM/Y.1731 ETH OAM学习笔记

    802.1ag CFM/802.3ah EFM OAM/Y.1731 ETH OAM学习笔记相关协议:1)IEEE802.1ag连通性故障管理(CFM:ConnectivityFaultManagement)2)IEEE802.3ah第一英里的以太网(EFM:EthernetintheFirstMile),其中第57章的以太网OAM3)ITU-TY.1731以太网OAM(Operation,AdministrationandMaintenance

    2025年5月29日
    3
  • Docker快速入门总结笔记

    Docker快速入门总结笔记Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。…

    2022年6月29日
    30
  • pycharm virtualenv和conda_pycharm添加环境变量

    pycharm virtualenv和conda_pycharm添加环境变量from: http://www.cnblogs.com/IDRI/p/6354237.htmlLinux:启动虚拟环境:sourceenv/bin/activate Windows:pipinstallvirtualenv创建虚拟环境目录env激活虚拟环境:C:\Python27\Scripts

    2022年8月26日
    4

发表回复

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

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