面试八股——线程

进程与线程的对比

线程的创建方式⭐

继承Thread类

实现Runnable接口

实现Callable类

适用于需要获取返回值的线程。

线程池创建线程

Callable与Runnable的区别

1. 首先Runnable的run方法是没有返回值的,Callable的call方法有返回值。

2. Runnable不能向外抛出异常,Callable可向外抛出异常。

run()与start()方法的区别

start()方法是开启一个线程,来执行run()方法,start()方法只能被调用一次。run()方法封装了线程执行的代码,可调用多次。

Thread类中的线程的状态

新建、可执行、死亡、阻塞、等待、计时等待(后三个可都叫做阻塞态)。

状态的转换

通过new方法产生一个线程a,a为新建状态。a调用start()方法后变为可执行状态,当a执行完成后进入死亡状态。假如a需要竞争一把锁,如果没有获取到锁,则a处于阻塞态(资源竞争导致)。当调用wait()方法后,a进入等待状态,调用notify方法后,a进入执行态。使用sleep()方法后,a进入计时等待状态。

多线程之间的顺序执行

多线程之间一般是并发执行的。如果需要使线程之间顺序执行,可使用以下方法:

1.join()方法

t1,t2,t3是3个线程,如果希顺序执行可见下图代码:

notify与notifyAll的区别

wait()与sleep()方法的区别⭐

相同点

wait()、wait(long time)、sleep(long time)都可让线程放弃CPU使用权,进入阻塞态。

不同点

方法归属不同:sleep方法是Thread的静态方法。wait()、wait(long time)是Object的成员方法,每个类都有。

唤醒时机不同

wait(long time)、sleep(long time)可以在固定时间后自动唤醒。wait(long time)、wait()只能通过notify唤醒。(wait(long time)有两种唤醒方式

锁的特性不同

重点是最后两点的对比。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

混合云构建-如何创建一个高可用的Site to Site VPN 连接 Azure 和GCP云

在现代云计算环境中,企业通常会采用多云战略,将工作负载分布在不同的云服务提供商上。这种方式可以提高可用性、降低供应商锁定风险,并利用每个云提供商的独特优势。然而,在这种情况下,需要确保不同云环境之间的互联互通,以实现无缝的数据传输和应用程序集成。 本文将详细介绍…

Python根据公募基金在一定时期内持有的股票数据进行社会网络分析

【背景】根据提供的公募基金在一定时期内持有的股票数据,构建一个社会网络分析框架,度量每个基金在每年的度中心度、介数中心度和特征向量中心度,并对相关数据做出简要说明。 【代码】 import networkx as nx import pandas as pd import n…

SpringBoot整合Mybatis实现从数据库中读取blob属性的图片在html页面中无法显示并且出现乱码实体类,如何解决?

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

大屏数字字体+渐变色

vue数据大屏使用数字字体_vue数字字体-CSDN博客 用css实现文字字体颜色渐变的三种方法_css 字体颜色渐变-CSDN博客

华为OD技术面试-有序数组第K最小值

背景 2024-03-15华为od 二面,记录结题过程 有序矩阵中第 K 小的元素 - 力扣(LeetCode) https://leetcode.cn/problems/kth-smallest-element-in-a-sorted-matrix/submissions/512483717/ 题目 给你一个 n x n 矩阵 matrix ,其…

HackMyVM-Gift

目录 信息收集 arp nmap WEB dirsearch hydra ssh连接 get root 信息收集 arp ┌─[rootparrot]─[~] └──╼ #arp-scan -l Interface: enp0s3, type: EN10MB, MAC: 08:00:27:16:3d:f8, IPv4: 192.168.9.102 Starting arp-scan 1.10.0 with 256 hosts (https://git…

SpringBoot框架——7.整合MybatisPlus

这篇主要介绍Springboot整合MybatisPlus,另外介绍一个插件JBLSpringbootAppGen,以及一个经常用于测试的基于内存的h2数据库。 Mybatisplus是mybatis的增强工具,和tk-mybatis相似,但功能更强大,可避免重复CRUD语句,先来…

#无FIFO驱动OV7670基于cubemx(草稿)

1.前言 之前在淘宝买了一个不带FIFO的OV7670,由于比赛和其他事一直搁置,现在有时间于是想玩一玩。我发现网上这个的教程多为标准库,有些甚至利用了DCMI(数字摄像头接口,目前已知F4系列是有这个外设的)。标…

单链表的基本操作实现:初始化、尾插法、头插法、输出单链表、求表长、按序号查找、按值查找、插入结点、删除结点。

1.参考学习博文(写的相当好的文章): http://t.csdnimg.cn/AipNl 2.关于我的总结: 定义单链表: typedef struct LNode {Elemtype data;struct LNode* next; }LNode; data用来存放元素值,next用来指向后…

[Vision Board创客营]学习片上Flash移植FAL

文章目录 [Vision Board创客营]学习片上Flash移植FAL介绍环境搭建使用组件测试porbeerasewriteread 结语 [Vision Board创客营]学习片上Flash移植FAL 水平较菜,大佬轻喷。😰😰😰 介绍 🚀🚀Vision-Board 开…

高仿小米商城用户端

高仿小米商城用户端(分为商城前端(tongyimall-vue)和商城后端(tongyimall-api)两部分),是Vue SpringBoot的前后端分离项目,用户端包括首页门户、商品分类、首页轮播、商品展示、商品推荐、购物车、地址管理、下订单、扫码支付等功能模块。 …

单链表-通讯录

目录 单链表实现 通讯录代码实现 初始化 初始化函数 添加 删除 展示 查找 修改 销毁 代码展示 main.c text.c text.h list.c list.h 和前面的通讯录实现差不多这次就是实现一个以单链表为底层的通讯录 单链表实现 数据结构:单链表-CSDN博客 通讯…