面试-java多线程与并发

1.如何实现处理线程的返回值
(1)主线程等待法
主线程等待法:程序执行时,没有等到value值赋予完成,就直接在主函数
中执行打印value的值。
缺点:需要自己去实现循环等待的逻辑。若需要等待的变量变多,需要等待的时间可能很久。无法精准控制。
代码实现:
在这里插入图片描述
(2)方法二
使用Thread的join()阻塞当前线程以等待子线程处理完毕。(这里会阻塞主线程)
精准控制,实现简单。缺点:力度不够细
在这里插入图片描述
(3)方法三
通过Callable接口实现:通过FutureTask 或者 线程池获取
线程池:好处:提交多个实现Callable的方法类,去让线程池并发的处理结果。方便我们对callable相关的类进行统一的管理。
Futuretask的task.get()会等待mycallable有返回值才会去返回的!
在这里插入图片描述
线程池实现:
在这里插入图片描述
代码思想:往线程池里提交任务,通过idDone判断是否完成,通过future.get去等待直到获取到我们获取到value的值。

3.线程状态
六个状态:
在这里插入图片描述
以上两种方式会是线程进入无限期等待。
Runing状态的线程位于可运行线程之中,等待被线程调度选中获取CPU使用权。
Ready状态的线程位于线程池中,等待被线程调度选中,获取cpu的使用权。获取cpu时间片后,就变成Runing状态的线程。
限期等待:在这里插入图片描述
在这里插入图片描述
当线程的run方法完成时,或者主线程的main方法完成时,我们认为线程是终止了。线程对象也许是活的,但是它已经不是一个单独执行的线程。线程一旦终止了就不能再复生。在一个终止的线程上调用start方法会抛出IllegalThreadStateException错误。

在这里插入图片描述

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

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

相关文章

【信息系统项目管理师知识点速记】变更管理

19.2 变更管理 变更管理是指在信息系统开发与维护过程中,控制所有变更请求,从而确保变更的顺利实施和系统的稳定运行。变更管理的目标是使变更过程透明化,保证每个变更有序可控地进行,减少变更带来的负面影响,提高变更实施的效率和质量。变更管理包括变更申请、评估、批准…

qt.qpa.xcb: could not connect to display问题解决

1、问题描述 以服务器pi5作为远程解释器,本地win11使用vscode远程调试视觉时报错如下: qt.qpa.xcb: could not connect to display qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "xxxxx" even though it was …

英伟达GB200系列AI芯片供不应求;阿里云通义灵码上线Visual Studio插件市场

🦉 AI新闻 🚀 英伟达GB200系列AI芯片供不应求 摘要:英伟达GB200系列AI芯片供不应求,台积电和日月光等公司获追加订单。GB200芯片性能提升30倍,成本和能耗降至25分之一。预计2025年出货量突破百万颗,后段封…

ArkUI JS层

JS层代码分析 关键方法: initialRenderobserveComponentCreationViewStackProcessor.StartGetAccessRecordingForViewStackProcessor.StopGetAccessRecording()loadDocument class Index extends ViewPU {constructor(parent, params, __localStorage, elmtId -…

浏览器优化的案例和最佳实践

浏览器优化的案例和最佳实践 减少HTTP请求数量优化资源文件优化DOM结构提升JavaScript性能优化渲染性能移除不必要的插件和扩展监控并分析页面性能持续优化和测试除了上述的优化方式,还有一些其他的浏览器优化技巧,包括: 减少HTTP请求数量 案例:某电商网站首页有大量的图片和C…

探索Java中的多态

多态(Polymorphism)是面向对象编程(OOP)中的一个核心概念,它允许同一个接口或方法在不同对象上具有不同的实现方式。Java作为一种面向对象的编程语言,广泛地利用了多态特性来提高代码的灵活性和可扩展性。本…

精准把握时间脉络:Java日期时间处理API深度解析与实战指南

在软件开发领域,准确无误地处理日期和时间信息是构建稳定、可靠应用程序的关键一环。随着技术的演进,Java作为一门广泛应用的编程语言,其处理日期和时间的API也经历了显著的变化和发展,旨在为开发者提供更为强大、灵活且易用的工具…

httpclient并发性能问题解决

故事 前段时间进行招聘笔试,有这么一个问题,请描述实践过程中解决httpclient并发性能问题的案例。然后自己之前是有遇到过,但是一直没有总结,趁此机会总结一波。 问题 请描述实践过程中解决httpclient并发性能问题的案例。并描…

企业级低代码开发效率变革赋能业务增长

企业级低代码开发已经成为当今软件开发领域的一大趋势,它为企业带来了前所未有的效率变革,从而赋能业务增长。本文将围绕这一主题,深入探讨低代码开发的概念、优势以及如何在企业级应用中实现高效的低代码开发,以助力我国企业实现…

Linux网络 - 再谈、详谈UDP和TCP协议

文章目录 前言预备netstatpidofcat /etc/services 一、UDP协议UDP协议端格式UDP的缓冲区基于UDP的应用层协议 二、TCP协议1.TCP协议段格式确认应答(ACK)机制三次握手疑问1 最后一次客户端发给服务端的ACK请求怎么保证服务端能够收到? 四次挥手疑问2 为什么挥手是四次…

51单片机STC89C52RC——4.1 矩阵按键(数码管显示按键值)

目录 目录 目的 一,STC单片机模块 二,矩阵按键模块 2.1 针脚定义 ​编辑 2.2 矩阵按键位置 2.3 如何理解按键按下后针脚的高低电平 2.3.1 错误理解1 2.3.2 错误理解2 2.3.3 正确判定按下的是那个按键的逻辑 2.3.4 判定按键按下的依次扫描程…

2024年618有哪些必囤的好物?2024年618好物排行榜

618年中大促再度来临。对于购物爱好者来说,这无疑是一个不容错过的购物盛宴。那么,在这个618,哪些好物值得你重点关注呢?我特地整理了一份推荐清单,这些产品不仅经过我的亲身体验,更以其出色的实用性和高性…

MySQL中结构化系统变量介绍

结构化变量(structured variable)与常规系统变量(regular system variable)之间的两个主要区别。以下是这两个区别的详细解释: 值是一个结构: 常规系统变量通常存储单一的值,比如一个整数、浮…

【XCharts插件】4-2、配置项手册(v3.0)

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址QQ群:398291828大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 XCharts插件是一款基于UGUI的功能强大、易用、参数可配置的数据可视化图表插件。 【Unity3D…

硬件基础知识——自学习梳理

计算机存储分为闪存和永久性存储。 硬盘(永久存储)主要分为机械磁盘和固态硬盘。 机械磁盘主要靠磁颗粒的正负极方向来存储0或1,且机械磁盘没有使用寿命。 固态硬盘就有使用寿命了,大概支持30w次的读写操作。 闪存使用的是电容…

使用js实现excel的读取展示以及导出

代码 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><link rel"st…

liunx打开谷歌报错

liunx打开谷歌报错[48526:48526:0624/173553.311113:ERROR:zygote_host_impl_linux.cc(99)] Running as root without --no-sandbox is not supported. See https://crbug.com/638180. 这个错误信息表明你尝试以root用户身份运行Chrome浏览器&#xff0c;但是没有使用–no-san…

现身说法,AI小白的大模型学习过程

导读 写这篇文章的初衷&#xff1a;作为一个AI小白&#xff0c;把我自己学习大模型的学习路径还原出来&#xff0c;包括理解的逻辑、看到的比较好的学习材料&#xff0c;通过一篇文章给串起来&#xff0c;对大模型建立起一个相对体系化的认知&#xff0c;才能够在扑面而来的大…

idea 突然 Cannot resolve symbol ‘xxx‘

解决一&#xff1a;关闭 idea&#xff0c;在文件夹中找到代码所在位置&#xff0c;删除 .idea 文件夹重新打开项目就可以了 解决二&#xff1a;检查 jdk 版本 解决三&#xff1a;保存重要文件&#xff0c;重新下载项目代码

接口防篡改+防重放攻击

接口防止重放攻击&#xff1a;重放攻击是指攻击者截获了一次有效请求(如交易请求),并在之后的时间里多次发送相同的请求&#xff0c;从而达到欺骗系统的目的。为了防止重放攻击&#xff0c;通常需要在系统中引入一种机制&#xff0c;使得每个请求都有一个唯一的标识符(如时间戳…