1. 什么叫线程安全?servlet是线程安全吗?

答:如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。 或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题。

servlet不是线程安全的,每个servlet都只被实例化一次,每个调用都是servlet的同一个实例,并且对类变量没有线程安全,数据量大的时候容易照成异常。

2. 同步有几种实现方法?

答:同步的实现方面有两种,分别是synchronized,wait与notify

3. volatile有什么用?能否用一句话说明下volatile的应用场景?

答:Volatile 变量具有 synchronized 的可见性特性,但是不具备原子特性。可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。

您只能在有限的一些情形下使用 volatile 变量替代锁。要使 volatile 变量提供理想的线程安全,必须同时满足下面两个条件:

A. 对变量的写操作不依赖于当前值。

B. 该变量没有包含在具有其他变量的不变式中。

4. 请说明下java的内存模型及其工作流程。

答:Java把内存划分成两种:一种是栈内存,一种是堆内存。

栈内存:存放对象:函数中基本类型的变量和对象的引用变量、静态类方法 ;特点:栈有一个很重要的特殊性,就是存在栈中的数据可以共享。

堆内存:存放对象:用来存放由new创建的对象和数组;特点:在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。

java 内存模型 ( java memory model ):根据Java Language Specification中的说明, jvm系统中存在一个主内存(Main Memory或Java Heap Memory),Java中所有对象成员变量都储存在主存中,对于所有线程都是共享的。每条线程都有自己的工作内存(Working Memory),工作内存中保存的是主存中某些对象成员变量的拷贝,线程对所有对象成员变量的操作都是在工作内存中进行,线程之间无法相互直接访问,变量传递均需要通过主存完成。

(1) 获取对象监视器的锁(lock)

(2) 清空工作内存数据, 从主存复制对象成员变量到当前工作内存, 即同步数据 (read and load)

(3) 执行代码,改变共享变量值 (use and assign)

(4) 将工作内存数据刷回主存 (store and write)

(5) 释放对象监视器的锁 (unlock)

5. 为什么代码会重排序?

线程安全面试题 java_Java面试题-线程安全相关推荐

  1. 三次握手面试题java_java面试题三次握手和四次挥手-嗨客网

    题目 对 tcp 了解吗?讲讲它的三次握手和四次挥手?为什么需要三次握手,为什么需要四次挥手. 答案 三次握手 第一次握手:客户端向服务器发送连接请求,这个时候报文首部中的同步为 SYN = 1,同时 ...

  2. 手撕面试题:多个线程交替打印问题

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 第一篇打算总结下阿里最喜欢问的多个线程顺序打印问题,我遇到 ...

  3. 如图两道面试题,顺便深入线程池,并连环17问

    这两面试题是基友朋友最近去面滴滴遇到的,今天就借着这两面试真题来深入一波线程池吧,这篇文章力求把线程池核心点和常问的面试点一网打尽,当然个人能力有限,可能会有遗漏,欢迎留言补充! 先把问题列出来,如果 ...

  4. 一道非常棘手的 Java 面试题:i++ 是线程安全的吗

    转载自  一道非常棘手的 Java 面试题:i++ 是线程安全的吗 i++ 是线程安全的吗? 相信很多中高级的 Java 面试者都遇到过这个问题,很多对这个不是很清楚的肯定是一脸蒙逼.内心肯定还在质疑 ...

  5. Java线程相关的热门面试题

    1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速.比如,如果一个线程完成 ...

  6. 面试官系统精讲Java源码及大厂真题 - 38 线程池源码面试题

    38 线程池源码面试题 与有肝胆人共事,从无字句处读书. --周恩来 引导语 线程池在日常面试中占比很大,主要是因为线程池内容涉及的知识点较广,比如涉及到队列.线程.锁等等,所以很多面试官喜欢把线程池 ...

  7. JAVA中的线程安全与非线程安全,java面试题,java高级笔试题

    写在最前面,我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家.扫码加微信好友进[程序员面试学习交流群],免费领取.也欢迎各位一起在群里探讨技术. 转自 ...

  8. 一道面试题:三个线程循环有序输出10次ABCABC...

    面试遇到的一道面试题:三个线程循环有序输出10次ABCABC... 解决思路:使用synchronized,wait和notifyAll控制线程同步 package com.myj.test.thre ...

  9. 多线程面试题_线程魔术技巧:使用Java线程可以做的5件事

    多线程面试题 Java线程最鲜为人知的事实和用例是什么? 有些人喜欢爬山,有些人喜欢跳伞. 我,我喜欢Java. 我喜欢它的一件事是,您永不停止学习. 您每天使用的工具通常可以为您带来全新的面貌,以及 ...

最新文章

  1. python画曲线图例-Python数据分析-Matplotlib图标绘制
  2. 7号团队-团队任务3:每日例会(2018-12-05)
  3. 天天象棋 残局闯关 第18关
  4. VTK:图表之VisualizeDirectedGraph
  5. SpringMVC(笔记)
  6. phpstorm xdebug配置
  7. Html 点透镂空遮罩,swift 实现遮罩部分区域“挖洞”效果和点击事件穿透
  8. 怎样提高你的Google Adsense收入
  9. 2020高压电工考试软件及高压电工模拟考试题库
  10. 做微商不推广,也能赚钱?
  11. 要做好云计算所需要的成本,主要分为哪六大成本?
  12. VmodCAM图像采集 VGA显示
  13. Sticky 黏性定位 兼容性css3
  14. 梅科尔工作室-梁嘉莹-鸿蒙笔记2
  15. 【python】18行代码带你采集国外网小姐姐绝美图片
  16. 用一些助记符表示指令的计算机语言是,2015年海南农村信用社考试营业柜员计算机练习题1...
  17. Larry wall - Perl之父
  18. 窄带物联网(NB-IoT)科技的关键技术是什么?
  19. 甲方乙方项目管理的差别
  20. 《战胜华尔街》书中的精髓:业余投资者如何根据行业特点选好股票,赚得比专业的投资者还要多?

热门文章

  1. WEB前端学习笔记01利用纯CSS书写二级水平导航菜单
  2. Python爬虫xpath详解
  3. SpringBatch 自定义ItemReader和可重新启动Reader(十五)
  4. Spark累加器实现原理及基础编程
  5. linux centos7内核降级和升级
  6. 【网址收藏】安装VMware Tools显示灰色正确解决办法
  7. Java操作MongoDB代码示例
  8. Hadoop 使用自动化脚本启动hdfs和yarn
  9. eureka服务注册yml配置
  10. Java基础--内部类及匿名内部类