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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • QQ农场开挂_农场游戏源码

    QQ农场开挂_农场游戏源码  QQ空间\校友农场外挂源代码12009年08月18日星期二11:41{///////////////////////////////////////////////////////////////////////////////                           声明//本代码不针对任何团体和个人,只为学习\交流\促进游戏的发展而发布//…

  • 函数模板与同名的非模板函数不可以重载(重载的定义)

    关于函数的重载机制,是一个比较复杂的问题,其中涉及到了优先级定义和最佳匹配等问题,如果要阐述清楚,恐怕不是一两篇文章就能说的明白。但是如果掌握了一些常用的“规律”,对于了解程序对重载函数是如何进行选择也有很大的好处,本文尝试将自己理解的知识,结合下面简单的例子简略的说说函数重载机制,文章的摘录部分列出了一些关于程序如何选择重载函数的规则。:)例子如下:#include

  • vue-router中的beforeEach

    vue-router中的beforeEach最近在做vue项目的开发,用到的技术栈主要是vue相关的,在开发这个项目的时候,设计到了权限,因为是后台管理系统,不同的身份和角色访问系统的时候,系统所展现出来的可访问内容都是不一样的,有兴趣的同学可以参考下RBAC(以角色为基础的权限管理设计)这篇文章写得很详细,很直观,我写这篇文章主要是想要分享一下前端的技术栈vue-router是如何处理的,以及踩过的坑。vue-router可以参考官方文档vue-router,官方文档中介绍的很详细,解决权限问题,就用到了addRoutes这个API,去动态添

  • sqlserver2012安装教程win10_sql2017安装教程图解

    sqlserver2012安装教程win10_sql2017安装教程图解推荐使用msdn我告诉你网站进行下载,SQLServer2012下载地址先选择服务器如何选择SQLServer2012选择自己要的版本,如果32位机器找x86的版本,如果是64位的请选择x64版本。安装好进入,系统会自动加载ios,找到安装程序,双击打开选择安装然后选择全新的sqlserver独立安装选择安装然后选择全新的sqlserver独立安装…

  • Docker使用教程超详细[通俗易懂]

    Docker使用教程超详细[通俗易懂]TableofContents1.Docker简介 1.1.Docker守护进程 1.2.Docker客户端 1.3.Docker内部 1.3.1.Docker镜像 1.3.2.Docker仓库 1.3.3.Docker容器 1.4.libcontainer 1.5.命名空间「Namespaces」 1.5.1.pidnamespace 1.5.2.mntnamespace 1.5.3.netnam

    2022年10月16日
  • 申请成为EFL Developer.

    申请成为EFL Developer.申请成为EFLDeveloper.

发表回复

您的电子邮箱地址不会被公开。

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