Java面试之多线程&并发篇(4)

打印 上一主题 下一主题

主题 883|帖子 883|积分 2649

前言

本来想着给本身放松一下,刷刷博客,忽然被几道面试题难倒!说一说本身对于 synchronized 关键字的相识?说说本身是怎么利用 synchronized 关键字?什么是线程安全?Vector是一个线程安全类吗?volatile关键字的作用?好像有点模糊了,那就大概看一下面试题吧。好记性不如烂键盘
*** 12万字的java面试题整理 ***
*** java核心面试知识整理 ***
*** Java高频面试讲解(知识涵盖齐全) ***
说一说本身对于 synchronized 关键字的相识?

synchronized关键字解决的是多个线程之间访问资源的同步性,synchronized关键字可以包管被它修饰的方法或者代码块在任意时刻只能有一个线程执行。
另外,在 Java 早期版本中,synchronized属于重量级锁,服从低下,由于监督器锁(monitor)是依赖于底层的操纵体系的Mutex Lock 来实现的,Java 的线程是映射到操纵体系的原生线程之上的。假如要挂起或者叫醒一个线程,都需要操纵体系帮忙完成,而操纵体系实现线程之间的切换时需要从用户态转换到内核态,这个状态之间的转换需要相对比较长的时间,时间成本相对较高,这也是为什么早期的synchronized 服从低的原因。
光荣的是在 Java 6 之后 Java 官方对从 JVM 层面临synchronized 较大优化,所以现在的 synchronized 锁服从也优化得很不错了。JDK1.6对锁的实现引入了大量的优化,如自旋锁、顺应性自旋锁、锁消除、锁粗化、偏向锁、轻量级锁等技术来减少锁操纵的开销。
说说本身是怎么利用 synchronized 关键字?


  • 修饰实例方法: 作用于当前对象实例加锁,进入同步代码前要得到当前对象实例的锁
  • 修饰静态方法:也就是给当前类加锁,会作用于类的所有对象实例,由于静态成员不属于任何一个实例对象,是类
    成员( static 表明这是该类的一个静态资源,不管new了多少个对象,只有一份)。
    所以假如一个线程A调用一个实例对象的非静态 synchronized 方法,而线程B需要调用这个实例对象所属类的静态 synchronized 方法,是答应的,不会发生互斥现象,由于访问静态 synchronized 方法占用的
    锁是当前类的锁,而访问非静态 synchronized 方法占用的锁是当前实例对象锁。
  • 修饰代码块: 指定加锁对象,对给定对象加锁,进入同步代码库前要得到给定对象的锁。
总结: synchronized 关键字加到 static 静态方法和 synchronized(class)代码块上都是是给 Class 类上锁。synchronized关键字加到实例方法上是给对象实例上锁。只管不要利用 synchronized(String a) 由于JVM中,字符串常量池具有缓存功能!
什么是线程安全?Vector是一个线程安全类吗?

假如你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。假如每次运行结果和单线程运行的结果是一样的,而且其他的变量 的值也和预期的是一样的,就是线程安全的。
一个线程安全的计数器类的同一个实例对象在被多个线程利用的情况下也不会出现盘算失误。很显然你可以将聚集类分成两组,线程安全和非线程安全的。
Vector 是用同步方法来实现线程安全的, 而和它相似的ArrayList不是线程安全的。
volatile关键字的作用?

一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就具备了两层语义:

  • 包管了不同线程对这个变量进行操纵时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。
  • 禁止进行指令重排序。
  • volatile本质是在告诉jvm当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取;synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被壅闭住。
  • volatile仅能利用在变量级别;synchronized则可以利用在变量、方法、和类级别的。
  • volatile仅能实现变量的修改可见性,并不能包管原子性;synchronized则可以包管变量的修改可见性和原子性。
  • volatile不会造成线程的壅闭;synchronized可能会造成线程的壅闭。
volatile标记的变量不会被编译器优化;synchronized标记的变量可以被编译器优化。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

美丽的神话

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表