Java 面试 (三)

目录

[1. 并发的概念](#1. 并发的概念)

[2. 如何创建线程 四种方式:](#2. 如何创建线程 四种方式:)

[3. 一个线程频繁的创建和销毁 是否有开销?](#3. 一个线程频繁的创建和销毁 是否有开销?)

[4. 线程的生命周期和状态](#4. 线程的生命周期和状态)

[5. AQS设计模式](#5. AQS设计模式)


1. 并发的概念

是指多个任务(程序,进程)在同一时间间隔内被启动和执行的一种机制。


2. 如何创建线程 四种方式:

  1. 通过继承Thread类并重写run()方法实现;

  2. 实现Runnable接口并重写run()方法:

  3. 通过Callable接口实现有返回值的线程

  4. 通过线程池管理线程资源


3. 一个线程频繁的创建和销毁 是否有开销?

会带来显著的系统开销,每次的创建和销毁都需要消耗时间和内存数据结构;

解决方案:通过复用线程避免频繁创建销毁。任务达到时直接使用空闲线程,省去创建延迟。


4. 线程的生命周期和状态

  1. new 新建状态

  2. runable 可运行状态

  3. blocked 阻塞状态

  4. waiting 等待状态

  5. timed-waiting 期限等待状态

  6. terminated 终止状态


5. AQS设计模式

AQS 是java并发包的核心基础框架,用于构建索;核心功能是管理线程和阻塞与唤醒;

设计模式:1. 固化不变部分(父类实现)

线程排队(CLH队列管理)

阻塞/唤醒机制

2. 开放可变部分

资源获取:tryAcquire(int arg)

资源释放:tryRelease(int arg)


6. 七个基本数据类型

byte、short、int、long、float、double、char、boolean


7. 线程和进程的区别

  1. hashmap的底层逻辑

  2. 方法重载和方法重写的区别

相关推荐
SuperEugene1 小时前
Vue状态管理扫盲篇:Vuex 到 Pinia | 为什么大家都在迁移?核心用法对比
前端·vue.js·面试
Hilaku2 小时前
我会如何考核一个在简历里大谈 AI 提效的高级前端?
前端·javascript·面试
前端Hardy2 小时前
别再用 $emit 满天飞了!Vue 3 组件通信的 4 种正确姿势,第 3 种 90% 的人不知道
前端·vue.js·面试
我叫黑大帅2 小时前
前端如何利用 GitHub Actions 自动构建并发布到 GitHub Pages?
前端·面试·github
我叫黑大帅2 小时前
前端总说的防抖与节流到底是什么?
前端·javascript·面试
掘金安东尼2 小时前
从平面到空间:用 React Three Fiber 构建 3D 产品网格
前端·javascript·面试
swipe3 小时前
#用这 9 个浏览器 API,我把页面从“卡成 PPT”救回到 90+(每个都有能直接抄的例子)
前端·javascript·面试
前端双越老师3 小时前
前端面试常见的 10 个场景题
前端·面试·求职
Lee川19 小时前
优雅进化的JavaScript:从ES6+新特性看现代前端开发范式
javascript·面试
Lee川1 天前
从异步迷雾到优雅流程:JavaScript异步编程与内存管理的现代化之旅
javascript·面试