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. 方法重载和方法重写的区别

相关推荐
血小板要健康1 天前
Java基础常见面试题复习合集1
java·开发语言·经验分享·笔记·面试·学习方法
VT.馒头1 天前
【力扣】2625. 扁平化嵌套数组
前端·javascript·算法·leetcode·职场和发展·typescript
cyforkk1 天前
09、Java 基础硬核复习:异常处理(容错机制)的核心逻辑与面试考点
java·数据库·面试
草履虫建模2 天前
力扣算法 121. 买卖股票的最佳时机
算法·leetcode·职场和发展·贪心算法·动态规划·一次遍历
爱尔兰极光2 天前
LeetCode--有序数组的平方
算法·leetcode·职场和发展
iAkuya2 天前
(leetcode)力扣100 58组合总和(回溯)
算法·leetcode·职场和发展
Warren982 天前
Pytest Fixture 作用域详解:Function、Class、Module、Session 怎么选
面试·职场和发展·单元测试·pytest·pip·模块测试·jira
爱尔兰极光2 天前
LeetCode--移除元素
算法·leetcode·职场和发展
努力学算法的蒟蒻2 天前
day73(2.1)——leetcode面试经典150
面试·职场和发展
Warren982 天前
接口测试理论
docker·面试·职场和发展·eureka·ansible