面试:线程和线程池

目录

目标

一、线程有哪些状态

1、新建态(NEW):

2、可运行态(RUNNABLE):

3、终结态(TERMINATED):

 4、阻塞态(BLOCKED):

5、等待态(WAITING):

6、有时限的等待(TIMED_WAITING):

1、获得有时限的wait(要释放锁)

2、调用线程的sleep方法(不释放锁)

二、按操作系统层面划分(五种状态)

三、线程池的核心参数(高频面试题)

1、corePoolSize(核心线程数):

2、maximumPoolSize(最大线程数目):

3、keepAliveTime(生存时间):

4、unit(时间单位):

5、workQueue

6、threadFactory(线程工厂):

7、handler(拒绝策略):


目标

  • 掌握Java线程的状态
  • 掌握Java 线程状态之间的转换
  • 辨析两种说法,六种状态 vs五种状态
  • 掌握线程池的主要参数

一、线程有哪些状态

新建态-->可运行态-->终结态(单向且不可逆)

1、新建态(NEW):

在新建一个线程时,它并不是一个真正的线程,只有在它调用了线程的start方法后,他就会由新建状态转换为可运行状态

2、可运行态(RUNNABLE):

这时候它真正与线程关联起来了,这时候它当中的代码就会交由操作系统分配给CPU执行

3、终结态(TERMINATED):

线程真正走到了尽头,底层所关联的线程和关联的相关资源也会得到释放。

 4、阻塞态(BLOCKED):

  • 线程在运行时,可能会发生多个线程争抢同一把锁,获取锁失败的线程就会进入阻塞态。
  • 在持锁线程释放锁的时候,就会唤醒阻塞的线程,然它们进行下一轮竞争锁的动作。
  • 这一轮竞争锁成功的线程就会恢复为可运行态;失败的线程仍然阻塞。

5、等待态(WAITING):

  • 线程在获得锁后去不满足条件,就会进入等待态,并且释放锁;在以后满足条件后再获得锁。
  • 但是之后它要重新去争抢锁。

6、有时限的等待(TIMED_WAITING):

1、获得有时限的wait(要释放锁

时间到了或者调用notify()都会唤醒。

2、调用线程的sleep方法(不释放锁

只有时间到了才会唤醒

二、按操作系统层面划分(五种状态)

  • 分到CPU时间的:  运行
  • 可以分到CPU时间的:  就绪
  • 分不到CPU时间的:  阻塞

注意:Java中的 RUNNABLE涵盖了就绪、运行、阻塞I/O

三、线程池的核心参数(高频面试题)

1、corePoolSize(核心线程数):

最多保留的线程数

2、maximumPoolSize(最大线程数目):

核心线程 + 救急线程

3、keepAliveTime(生存时间):

针对救急线程

4、unit(时间单位):

针对救急线程

5、workQueue

阻塞队列

6、threadFactory(线程工厂):

可以为线程创建时起个好名字

7、handler(拒绝策略):

(1)默认:ThreadPoolExecutor.AbortPolicy();

抛异常

(2)  ThreadPoolExecutor.CallerRunsPolicy();

让调用者自己处理任务,此时为主线程调用submit

所以该任务由主线程处理

(3)  ThreadPoolExecutor.DiscardPolicy();

直接丢弃任务,也不抛异常

(4)  ThreadPoolExecutor.DiscardOldestPolicy();

把队列中最老的任务丢弃。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/540437.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

springboot3使用自定义注解+AOP+redis优雅实现防重复提交

⛰️个人主页: 蒾酒 🔥系列专栏:《spring boot实战》 🌊山高路远,行路漫漫,终有归途 目录 写在前面 实现思路 实现步骤 1.定义防重复提交注解 2.编写一个切面去发现该注解然后执行防重复提交逻辑 3.测试 …

VNC Viewer 连接远程主机及常见错误处理(The connection closed unexpectedly)

搭建可接收vnc连接的环境 1、下载镜像 https://github.com/fcwu/docker-ubuntu-vnc-desktop 该镜像是含有ubuntu 通过docker运行的桌面环境,并接受vnc 的连接 docker pull dorowu/ubuntu-desktop-lxde-vnc 2、运行容器 1)只暴露容器的80端口&#…

1.汉诺塔问题

C力扣 汉诺塔 class Solution { public:void hanota(vector<int>& a, vector<int>& b, vector<int>& c) {dfs(a,b,c,a.size());}void dfs(vector<int>& a, vector<int>& b, vector<int>& c,int n){if(n1){c.push…

李廉洋;4.13黄金,原油最新资讯,下周一盘走势分析及策略。

美国杜克大学大宗商品研究教授Harvey表示&#xff0c;目前除了避险情绪外&#xff0c;“上涨惯性”也是促使黄金“疯涨”的原因。他表示&#xff1a;“目前不断涌入黄金市场的资金实际上在增加风险敞口&#xff0c;除了散户&#xff0c;对冲基金和其他机构投资者也加入了黄金热…

股票价格预测 | Python使用LSTM预测股票价格

文章目录 效果一览文章概述代码设计效果一览 文章概述 Python使用LSTM预测股票价格 代码设计 import pandas as pd import matplotlib.pyplot as plt import numpy as np import tensorflowfrom numpy import

【Jenkins】Jenkins自动化工具介绍

目录 技术背景常规的手动打包步骤 Jenkins简介起源与发展Jenkins的核心价值1.自动化1.1代码构建1.2测试自动化1.3自动部署 2.持续集成与持续部署CI/CD的概念如何减少集成问题更快速地发布软件版本 Jenkins优势Jenkins的主要竞争对手Travis CI:CircleCI:GitLab CI: Jenkins与其他…

Go操作Kafka之kafka-go

Kafka是一种高吞吐量的分布式发布订阅消息系统&#xff0c;本文介绍了如何使用kafka-go这个库实现Go语言与kafka的交互。 Go社区中目前有三个比较常用的kafka客户端库 , 它们各有特点。 首先是IBM/sarama&#xff08;这个库已经由Shopify转给了IBM&#xff09;&#xff0c;之…

WebGL 2.0相较于1.0有什么不同?

作者&#xff1a;STANCH 1.概述 WebGL 1.0自推出以来&#xff0c;已成为广泛支持的Web标准&#xff0c;既能跨平台&#xff0c;还免版税。它通过插件为Web浏览器带来高质量的3D图形&#xff0c;这是迄今为止市场上使用最广泛的Web图形&#xff0c;并得到Apple&#xff0c;Goog…

Arduino _按键点亮——led

int8_t led_pin13;int8_t led2_pin12; void setup() {// put your setup code here, to run once:pinMode(led_pin, INPUT);//输入pinMode(led2_pin, OUTPUT);//输出 }void loop() {// put your main code here, to run repeatedly:if(digitalRead(led_pin)1){//digitalRead(…

智慧校园平台解决方案-迎新管理系统

数字迎新管理系统是整个智慧校园不可缺少的一部分&#xff1b;主要是为了方便学校优化迎新流程&#xff0c;规范迎新流程&#xff0c;高效率的迎新&#xff0c;减少学生迎新繁琐流程。现阶段自友科技数字迎新利用了网络方式在网上即可提前知道迎新流程&#xff0c;学生家长在手…

【python】python饮料销售数据分析可视化(源码+数据集)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

高效保护,无粉乳胶手套助您安心工作

在快节奏的现代生活中&#xff0c;我们每天都在与各种细菌、污染物和化学品打交道&#xff0c;因此保护我们的身体健康变得愈发重要。特别是在工作环境中&#xff0c;手部是最容易受到伤害和污染的部位之一。为了提供最佳的保护&#xff0c;优斯特推出了一款高品质的无粉乳胶手…

Web3 的社会影响:数字社会的新时代

随着科技的不断进步和创新&#xff0c;人类社会正逐步进入数字化时代的新阶段。Web3 技术作为数字社会的重要组成部分&#xff0c;正在以前所未有的方式重塑着我们的社会生活和交往方式。本文将探讨 Web3 技术对社会的影响&#xff0c;以及它所带来的数字社会的新时代。 1. Web…

阻塞队列和生产消费模型

阻塞队列 阻塞队列的概念 队列相信我们已经不陌生了 之前也学过很多队列 比如: 普通队列 和 优先级队列 两种 这两种队列都是线程不安全的 而我们讲的阻塞队列 刚好可以解决线程安全问题 也是先进先出 并且带有阻塞功能. 阻塞功能是怎么回事呢 就是如果入队的时候阻塞队列为…

深入解析API技术:原理、实现与应用

在现代软件开发中&#xff0c;API&#xff08;应用程序接口&#xff09;扮演着至关重要的角色。API 允许不同的软件应用程序和系统之间进行通信和数据交换&#xff0c;从而构建出更加高效、灵活和可扩展的软件解决方案。本文将深入解析API技术的原理、实现方法&#xff0c;并附…

iptables/ebtables学习笔记

目录 一、前言 二、Netfilter 构成 三、Netfilter 转发框架 四、Netfilter 与 iptables 五、Netfilter 与 ebtables 一、前言 Netfilter 是 Linux 内核的数据包处理框架&#xff0c;由 Rusty Russell 于 1998 年开发&#xff0c; 旨在改进以前的 ipchains&#xff08;Lin…

中霖教育:一级建造师能跨省考吗?

一级建造师是可以跨省考的&#xff0c;对于考生的户籍地并没有限制&#xff0c;只要符合参加考试的条件就可以报名。 但是&#xff0c;对于异地报名参加一级建造师考试的考生&#xff0c;必须经过严格的资料审核流程。考生在报名过程中需要提交居住证明、工作证明、以及异地考…

c语言例题,求数组中最大值,99乘法口诀表

例题1&#xff1a;求出数组中最大的值 根据题意&#xff0c;我们知道的是需要从一个数组中找到一个最大的元素并且输出。那首先我们先建立一个数组&#xff0c;然后将一些不有序的整型元素放到数组中&#xff0c;然后再建立一个变量来存放数组中的第一个元素&#xff0c;通过一…

第23次修改了可删除可持久保存的前端html备忘录:增加了百度引擎

第22次修改了可删除可持久保存的前端html备忘录视频背景分离&#xff0c;增加了本地连接&#xff0c;增加了纯CSS做的折叠隐藏修改说明 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport…

(三)ffmpeg 解码流程以及函数介绍

一、视频解码流程 二、函数介绍 1.avformat_network_init 函数作用&#xff1a; 执行网络库的全局初始化。这是可选的&#xff0c;不再推荐。 此函数仅用于解决旧GnuTLS或OpenSSL库的线程安全问题。如果libavformat链接到这些库的较新版本&#xff0c;或者不使用它们&#…