Java 进阶:如何让线程主动让出 CPU

  • Java 进阶如何让线程主动让出 CPU
    • Threadsleep
    • Threadyield
    • ThreadcurrentThreadsuspend
    • Objectwait
    • LockSupportpark
    • Threadstop

Java 进阶:如何让线程主动让出 CPU

Thread.sleep

sleep 方法可以让线程主动让出 CPU,但是并不会释放锁。

/** * Causes the currently executing thread to sleep (temporarily cease * execution) for the specified number of milliseconds, subject to * the precision and accuracy of system timers and schedulers. The thread * does not lose ownership of any monitors. */ public static native void sleep(long millis) throws InterruptedException;

Thread.yield

yield 也可以让线程主动让出 CPU,然后和其他线程一起竞争 CPU,但是调度器也可以忽略 yield。哪些情况会用到 yield 呢?
1. 一般在 debug 和 test 中使用。
2. CPU 密集型应用主动让出 CPU 以避免过度占用 CPU,影响其他任务。

/** * A hint to the scheduler that the current thread is willing to yield * its current use of a processor. The scheduler is free to ignore this * hint. * * <p> Yield is a heuristic attempt to improve relative progression * between threads that would otherwise over-utilise a CPU. Its use * should be combined with detailed profiling and benchmarking to * ensure that it actually has the desired effect. * * <p> It is rarely appropriate to use this method. It may be useful * for debugging or testing purposes, where it may help to reproduce * bugs due to race conditions. It may also be useful when designing * concurrency control constructs such as the ones in the * {@link java.util.concurrent.locks} package. */ public static native void yield();

Thread.currentThread().suspend()

该方法已过时。为啥呢?suspend 挂起线程,并不会释放锁,又不像 sleep 那样一段时间后自动恢复,所以容易引起死锁。相对应的 resume 方法用于唤醒一个 suspend 的线程。

/** * Suspends this thread. * <p> * First, the <code>checkAccess</code> method of this thread is called * with no arguments. This may result in throwing a * <code>SecurityException </code>(in the current thread). * <p> * If the thread is alive, it is suspended and makes no further * progress unless and until it is resumed. * * @exception SecurityException if the current thread cannot modify * this thread. * @see #checkAccess * @deprecated This method has been deprecated, as it is * inherently deadlock-prone. If the target thread holds a lock on the * monitor protecting a critical system resource when it is suspended, no * thread can access this resource until the target thread is resumed. If * the thread that would resume the target thread attempts to lock this * monitor prior to calling <code>resume</code>, deadlock results. Such * deadlocks typically manifest themselves as "frozen" processes. * For more information, see * <a href="{@docRoot}/../technotes/guides/concurrency/threadPrimitiveDeprecation.html">Why * are Thread.stop, Thread.suspend and Thread.resume Deprecated?</a>. */ @Deprecated public final void suspend() { checkAccess(); suspend0(); } @Deprecated public final void resume() { checkAccess(); resume0(); }

Object.wait

wait 会把当前持有的锁释放掉同时阻塞住,让出 CPU。当其他线程调用 Object.notify/notifyAll 时,会被唤醒,可能得到 CPU,并且获得锁。

LockSupport.park

这就是锁了嘛,相对应的用 unpark 解锁。

Thread.stop

该方法已过时,直接停止线程,同时会释放所有锁,太过暴力,容易导致数据不一致。

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

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

相关文章

AngularJS 模块详解

AngularJS 模块详解 引言 AngularJS 是一个强大的JavaScript框架,用于构建单页应用程序(SPA)。它提供了一套丰富的特性,其中包括模块化。模块化是现代软件开发的一个重要概念,它有助于提高代码的可维护性和可扩展性。本文将详细解析 AngularJS 模块的概念、创建和使用方…

救命神器!自考必看TOP9 AI论文网站测评与推荐

救命神器&#xff01;自考必看TOP9 AI论文网站测评与推荐 2026年自考论文写作工具测评&#xff1a;为何需要这份榜单&#xff1f; 随着人工智能技术的不断进步&#xff0c;AI论文写作工具在学术领域的应用越来越广泛。对于自考学生而言&#xff0c;撰写高质量论文不仅是毕业的必…

idea创建springBoot的五种方式

目录 第一种 第二种 第三种 第四种 第五种 1.先创建一个普通的mavenjava项目 2.pom.xml 3.启动类 4.controller 5.运行访问 第一种 idea直接从spring.io官网下载 https://start.spring.io/ 使用jar包创建就行&#xff0c;也是maven项目&#xff0c;jdk选1.8&#…

Java实战:Spring Boot application.yml配置文件详解

本文将详细介绍Spring Boot application.yml 配置文件的使用和配置项。我们将探讨 application.yml 文件的基本概念&#xff0c;以及如何使用它来配置Spring Boot应用程序的各个方面。此外&#xff0c;我们将通过具体的示例来展示如何配置不同的Spring Boot组件&#xff0c;如数…

idea、mybatis报错Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required

这个错误通常与MyBatis的配置有关&#xff0c;涉及到MyBatis的SqlSessionFactory或SqlSessionTemplate的配置问题。以下是一些可能的解决方案&#xff1a; 1.检查DataSource配置&#xff1a; 确保你的数据源&#xff08;DataSource&#xff09;被正确配置。在Spring Boot中&…

Azure GPv1 存储账户迁移至 GPv2 完整指南

概述 Microsoft Azure 将于 2026年10月13日 正式退役通用用途 v1(General-purpose v1,GPv1)存储账户。所有用户必须在此日期前将 GPv1 存储账户升级至通用用途 v2(General-purpose v2,GPv2),以避免服务中断和潜在的成本增加。 为什么需要迁移? 退役时间线 截止日期:…

Java学习进阶知识篇

系列文章目录 提示&#xff1a;....................... 文章目录 系列文章目录前言一、类和对象 面向对象基本介绍类的基本使用属性构造方法和析构方法对象 二、总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; Java面向对象编程的进阶知识 一、…

Prompt Tuning动态选医疗特征提速诊断

&#x1f4dd; 博客主页&#xff1a;Jax的CSDN主页 Prompt Tuning动态选医疗特征提速诊断 目录Prompt Tuning动态选医疗特征提速诊断 引言&#xff1a;诊断效率的全球性挑战 技术原理&#xff1a;动态特征选择的机制创新 现实应用&#xff1a;2023年临床试点的突破性验证 挑战与…

Memcached 连接:深入理解与优化实践

Memcached 连接:深入理解与优化实践 引言 Memcached 是一种高性能的分布式内存对象缓存系统,它能够存储键值对,广泛应用于减轻数据库负载、提高系统响应速度等方面。在Memcached的应用中,连接的建立和维护是至关重要的。本文将深入探讨Memcached连接的原理、优化策略以及…

深度学习计算机毕设之基于python训练鲜花识别基于卷神经网络训练鲜花识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

HeidiSQL导入与导出数据

HeidiSQL两种导入与导出数据的方法&#xff1a;整个库复制&#xff0c;和仅复制数据 一 整个库复制 1 选中需要导出的数据库(这里是MyDBdata)&#xff0c;点击导出为SQL脚本。2 按照如图进行选择3 选做&#xff1a;删除当前数据库【如果有】 -- 删除数据库 USE mysql; DROP DAT…

2026最全Gemini学生优惠申请指南

Google 在 2025 年正式推出 Gemini 学生优惠计划&#xff0c;符合条件的学生可在2026年1月31日前通过认证免费获得价值约 $300 的 Google AI Pro 服务长达 15 个月。这意味着你可以零成本使用&#xff1a;Gemini Advanced&#xff08;2.5 Pro / 3 系列模型&#xff09;2TB Goog…

毫米波V2I网络的链路层仿真研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

AS7341可见光谱传感器原理图设计,已量产(光线传感器)

目录 1、电源系统:PAM3101 LDO 的 “稳” 字诀 2、AS7341 核心电路:电平匹配是 I2C 通信的 “生命线” 3、暗光补光:传感器自控制的高亮 LED 电路 4、实际调板的小注意点 最近在做便携式环境光光谱检测项目时,我们基于 ams 的 AS7341 搭了一套硬件电路 —— 这颗芯片算…

文档解析API哪个好用

在构建企业知识库或RAG系统时&#xff0c;文档解析质量直接决定了大模型理解的上限。市面上文档解析API众多&#xff0c;但真正能应对复杂场景的却屈指可数。从跨页表格到手写公式&#xff0c;从多栏布局到扫描件识别&#xff0c;每一个技术难点都可能成为项目的拦路虎。本文将…

三一重工标杆企业游学—走进名企,对标精益生产管理

作为享誉全球的重型机械制造龙头&#xff0c;三一重工不仅是ZhongGuo制造业高质量发展的标杆&#xff0c;更彰显着ZhongGuo企业在全球化赛道中的硬核实力与韧性。此次&#xff0c;我们带领参访团走进长沙三一重工&#xff0c;开启一场深度研学之旅。三一重工始于20世纪九十年代…

俄罗斯总统透露:美国想在扎波罗热核电站进行加密货币挖矿?

在俄乌冲突持续的背景下&#xff0c;一则围绕欧洲最大核电站——扎波罗热核电站&#xff08;ZNPP&#xff09;的消息&#xff0c;为本已复杂的地缘政治棋局更添上一层不确定性。据俄罗斯媒体《Kommersant》报道&#xff0c;俄罗斯总统普京在2025年圣诞节前夕的一次高层会议上透…

JavaScript 调试

JavaScript 调试 引言 JavaScript 作为 Web 开发中的核心语言,其调试能力直接影响到开发效率和代码质量。本文将详细介绍 JavaScript 调试的基本概念、常用调试工具、调试技巧以及最佳实践,帮助开发者更好地掌握 JavaScript 调试技术。 调试的基本概念 什么是调试? 调试…

环境振动估算阻尼比 (SDOF)研究(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&a…

2026Teng讯总部游学:解码数字经济,锚定营销增长新坐标

站在深圳Teng讯滨海大厦的互联天桥下&#xff0c;流线型空间里交织的蓝色灯光格外醒目。这座连接两座塔楼的空中走廊&#xff0c;不仅是惊艳的建筑奇迹&#xff0c;更将Teng讯“连接一切”的核心理念具象化&#xff0c;直击人心。步入总部展厅&#xff0c;初代QQ企鹅憨态可掬&a…