并发编程面试题-内存模型
说下内存模型
定义
为什么要有内存模型
为什么要重排序,重排序在什么时候排
如何约束重排序规则
happens-before
什么是顺序一致性
CAS 实现的原理,是阻塞还是非阻塞方式?什么时候用,使用时需要考虑的问题
处理器和 Java 分别怎么保证原子操作
保证了原子性就能保证可见性吗?
final 内存语义?什么时候用,使用时需要考虑的问题
volatile 内存语义,什么时候用,用的时候需要考虑什么问题
synchronized 内存语义,什么时候用,和锁比较一下优缺点
synchronized 中涉及的锁升级流程
锁的内存语义,举例说明,加锁失败时候的处理流程
比较下 CAS 、volatile 、synchronized、Lock 区别
原子操作类底层实现机制?自增操作是怎么保证原子性的?
并发编程面试题-线程
线程的状态有哪些
如何在 Java 中实现线程?
如何在 Java 中启动一个线程?
设计线程中断的意义是什么
Java 中 interrupted 和 isInterrupted 方法的区别?
如何停止一个线程?
线程 join 方法干什么用?
有三个线程 T1,T2,T3,怎么确保它们按顺序执行?
线程的等待通知机制实现机制?
为什么应该在循环中检查等待条件?
为什么 wait 和 notify 方法要在同步块中调用?
为什么 wait, notify 和 notifyAll 这些方法不在 thread 类里面?
ThreadLocal 是什么,怎么实现的
线程池是什么,提交一个任务进去,处理流程?
Executor 框架介绍
JUC 包中提供了哪些配置好的线程池,差异化是什么
什么是 FutureTask?
并发编程面试题-锁
Lock 接口提供了哪些实现类
AQS 是什么,提供了哪些方法
AQS 中独占锁和共享锁的操作流程大体描述一下
重入锁有什么好处,什么时候考虑用
读写锁有什么好处,什么时候考虑用?读锁是什么类型的锁,写锁呢?
说下读写锁里的锁降级流程,什么时候可以考虑用这个机制
park 方法是怎么实现的
锁的等待通知机制 Condition 是怎么实现的,有了线程的等待通知机制为什么还要设计 Condition?
死锁怎么产生的,如何避免
说说 Java 中有哪些锁
sleep、wait、park、Condition 都能让线程等待,有什么区别?
并发编程面试题-容器与工具
阻塞和非阻塞有什么区别,他们可以用什么方式实现
队列(Queue)提供哪些操作
阻塞队列提供了哪些获取元素的方法,有什么区别?
阻塞队列有哪些实现?为什么要分有界无界?
CountDownLatch 怎么实现的,什么时候考虑用?
CyclicBarrier 怎么实现的,什么时候考虑用?
Semaphore 怎么实现的,什么时候考虑用?
如何在两个线程间共享数据?
Exchanger 怎么实现的,什么时候考虑用?
ConcurrentHashMap 实现?
fork/join 框架是什么?

Java 并发编程面试题的更多相关文章

  1. Java并发编程面试题 Top 50 整理版

    本文在 Java线程面试题 Top 50的基础上,对部分答案进行进行了整理和补充,问题答案主要来自<Java编程思想(第四版)>,<Java并发编程实战>和一些优秀的博客,当然 ...

  2. java 并发编程面试题及答案

    1.在java中守护线程和本地线程区别? java中的线程分为两种:守护线程(Daemon)和用户线程(User). 任何线程都可以设置为守护线程和用户线程,通过方法Thread.setDaemon( ...

  3. Java并发编程面试题1

    package com.mozq.thread.producer2; /* * 面试题2:以下代码是否存在错误 class ThreadTest implements Runnable{ public ...

  4. Java并发编程75道面试题及答案

    1.在java中守护线程和本地线程区别? java中的线程分为两种:守护线程(Daemon)和用户线程(User). 任何线程都可以设置为守护线程和用户线程,通过方法Thread.setDaemon( ...

  5. Java并发编程73道面试题及答案 —— 面试稳了

    今天主要整理一下 Java 并发编程在面试中的常见问题,希望对需要的读者有用. 1.在java中守护线程和本地线程区别? java中的线程分为两种:守护线程(Daemon)和用户线程(User). 任 ...

  6. 【Java并发编程】synchronized相关面试题总结

    目录 说说自己对于synchronized关键字的了解 synchronized关键字的三种使用 synchronized关键字的底层原理 JDK1.6之后对synchronized关键字进行的优化 ...

  7. 【Java并发编程】阿里最喜欢问的几道线程池的面试题?

    引言 上一篇文章我们有介绍过线程池的一个基本执行流程<[Java并发编程]面试必备之线程池>以及它的7个核心参数,以及每个参数的作用.以及如何去使用线程池 还留了几个小问题..建议看这篇文 ...

  8. java并发编程系列

    1.多线程的概念与使用:java笔记五:多线程的使用 2.多线程产生的问题,解决的方法, 1.引入线程池的原因:Java并发编程:线程池的使用 2.高并发情况下数据库提交:jdbc事务处理, 理解事务 ...

  9. Java并发编程笔记之ConcurrentHashMap原理探究

    在多线程环境下,使用HashMap进行put操作时存在丢失数据的情况,为了避免这种bug的隐患,强烈建议使用ConcurrentHashMap代替HashMap. HashTable是一个线程安全的类 ...

随机推荐

  1. JAVA初学者——标识符命名规则及数据类型的转换

    Hello!我是浩宇大熊猫~ 直接进入正题吧~ 1)标识符的命名规则. 标识符命名法有小驼峰命名法和大驼峰命名法两种,分别应用于方法.变量和类. 小驼峰命名法应用于方法和变量,主要有两个约定: 1.标 ...

  2. MBProgressHUD覆盖键盘

    发送消息的时候,需要用MBProgressHUD来覆盖窗口等待发送成功,但是无论如何键盘都覆盖不上. 于是各种研究,添加到view,添加到window,都无果..想破了脑子,总觉得加到window都覆 ...

  3. The flower(寻找出现m次以上,长度为k的子串)

    链接:https://ac.nowcoder.com/acm/contest/3665/B来源:牛客网 题目描述 Every problem maker has a flower in their h ...

  4. l1 和l2范数的真实意义

    很长时间一直没有明白真实的含义,十一期间补充一下这方面的知识. l0 范数是 ||x||0 = xi (xi不等于0)代表非0数字的个数,[1,2,3,4,5]  非0个数为5,[0,1,2,0,3] ...

  5. ArcGIS 二次开发总结

    个人总结 1. Enterprise10.7新特性 新增共享实例,可以将不常用服务分配共享实例,减少服务器压力.仅支持ArcGIS pro发布的地图服务,且仅开启feature access,kml, ...

  6. pip anaconda 添加国内镜像

    源地址 官方默认镜像太慢.换成国内源比较快.几个源的地址: 清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http://mirrors.aliyun. ...

  7. 从西班牙、英国出租车与Uber之争,看共享打车未来发展趋势

    一种新事物.新服务的崛起,必然会损害传统事物和服务的既得利益.比如在电灯泡发明之初,煤油灯企业就将电灯泡专利收购并"雪藏"以维护自己的利益.而电商的崛起,也让传统的线下实体店受到严 ...

  8. Linux-sys文件系统

    1.sys文件系统本质上和proc文件系统是一样的,都是虚拟文件系统.都在根目录下有个目录(一个是/proc目录,另一个是/sys目录),因此都不是硬盘中的文件,都是内核中的数据结构的可视化接口. 2 ...

  9. lombak-插件使用

    1.@Slf4j .@data 使用 依赖jar ,需要安装该插件 (https://blog.csdn.net/xue632777974/article/details/80437452) < ...

  10. 使用Spring Boot和OAuth构建安全的SPA

    最近一段时间都在闭关学习,过程还是有点艰辛的,幸运的是还有优锐课老师带着,少走了很多弯路.很久也没有更新文章了,这篇想和大家分享的是,了解如何在使用Spring Boot入门程序的同时使用Spring ...