当前位置: 首页 > news >正文

多线程面试题开胃菜6(5道)

一、Fork/Join 框架是干什么的?

大任务自动分散小任务,并发执行,合并小任务结果。

二、线程数过多会造成什么异常?

线程过多会造成栈溢出,也有可能会造成堆异常。

三、说说线程安全的和不安全的集合。

Java 中平时用的最多的 Map 集合就是 HashMap 了,它是线程不安全的。

看下面两个场景:

1、当用在方法内的局部变量时,局部变量属于当前线程级别的变量,其他线程访问不了,所以这时也不存在线程安全不安全的问题了。

2、当用在单例对象成员变量的时候呢?这时候多个线程过来访问的就是同一个HashMap 了,对同个 HashMap 操作这时候就存在线程安全的问题了。

四、什么是 CAS 算法?在多线程中有哪些应用。

CAS,全称为 Compare and Swap,即比较-替换。假设有三个操作数:内存值 V、旧的预期值 A、要修改的值 B,当且仅当预期值 A 和内存值 V 相同时,才会将内存值修改为 B 并返回 true,否则什么都不做并返回 false。当然 CAS 一定要 volatile变量配合,这样才能保证每次拿到的变量是主内存中最新的那个值,否则旧的预期值 A 对某条线程来说,永远是一个不会变的值 A,只要某次 CAS 操作失败,永远都不可能成功。java.util.concurrent.atomic 包下面的 Atom****类都有 CAS 算法的应用。

五、怎么检测一个线程是否拥有锁?

java.lang.Thread#holdsLock 方法

http://www.lryc.cn/news/6613.html

相关文章:

  • 植物大战 List——C++
  • 安灯(andon)系统是车间现场管理的必备工具
  • Hazel游戏引擎(004)
  • 【CS224W】(task4)图嵌入表示学习
  • 分享111个HTML医疗保健模板,总有一款适合您
  • 山东大学2022操作系统期末
  • Hadoop高可用搭建(一)
  • 算法 - 剑指Offer 重建二叉树
  • 手写JavaScript常见5种设计模式
  • Python 异步: 当前和正在运行的任务(9)
  • REDIS-雪崩、击穿、穿透
  • 什么人合适学习Python
  • greenDao的使用文档
  • 基于JAVA+SpringBoot+LayUI+Shiro的仓库管理系统
  • 金三银四面试必看,复盘字节测试开发面试:一次测试负责人岗位面试总结
  • 【算法自由之路】 贪心算法
  • Scratch少儿编程案例-水果忍者-学生作业
  • 7.Docker Compose
  • GitHub访问问题与 Steam++下载及使用(适合小白)
  • Oracle对象——视图之简单视图与视图约束
  • SAP模块常用增强总结
  • 当make执行遇到 Arguments too long
  • 《手把手教你》系列基础篇(七十三)-java+ selenium自动化测试-框架设计基础-TestNG实现启动不同浏览器(详解教程)
  • Maven基础
  • C++入门:初识类和对象
  • BERT在CNN上也能用?看看这篇ICLR Spotlight论文丨已开源
  • 【MFC】模拟采集系统——界面设计(17)
  • 锐捷(十五)mpls vxn跨域optionc场景
  • 2023备战金三银四,Python自动化软件测试面试宝典合集(七)
  • redis 主从复制