gpt4 book ai didi

java - 如何防止我的 Java 程序在其他应用程序运行时出现滞后?

转载 作者:太空宇宙 更新时间:2023-11-04 08:41:21 25 4
gpt4 key购买 nike

我用 Java 编写了一段简单的代码,它使用 Robot 类根据某些条件移动鼠标。

虽然代码运行良好,但当其他应用程序运行时似乎存在“滞后”。

我认为 Java 在发布系统消息时存在一些问题。

有办法避免这种情况吗?

最佳答案

在开始考虑减少延迟之前,您必须首先了解其原因。我将以一种您可以理解“为什么”以及“做什么”的方式呈现答案。

根据您的描述,只有当其他程序与您的机器人一起运行时才会出现延迟,导致延迟的最可能原因是:

<小时/>

缺乏系统资源 - 同时运行太多东西,消耗太多内存/处理能力,从而使操作系统减慢某些程序的速度,以便能够运行其他程序。

该怎么做:要尝试解决此类问题,您可以尝试优化代码,使其使用更少的内存/处理能力,从而减少延迟的原因,并隐式地减少延迟本身。不幸的是,很难合法地对任何第 3 方程序执行相同的操作,因此如果并发应用程序不是您的,则很难完全消除延迟。

<小时/>

关于不可复制、不可共享组件的并发 - 一个或多个组件无法同时被多个进程访问且无法克隆到多个实例,因此需要由多个正在运行的进程使用。当一个进程控制它时,任何其他进程都别无选择,只能等待该组件被释放。

该怎么办:在这种情况下,除了降低并发进程的优先级同时增加你的优先级(有效地减慢它们以使你的程序运行得更快),或者完全关闭它们之外,几乎没有任何合法的方法。

操作方法:要提高进程的优先级,可以使用以下代码将其设置为 80%(默认值通常为 50%),插入 main() 中:

Thread.currentThread().setPriority((int)(Thread.MAX_PRIORITY*0.8));

注意:您可以使用Thread.MAX_PRIORITY而不乘以0.8,将您的进程设置为“永远”放弃它需要的任何组件,但这是不推荐,因为它几乎会暂停任何需要组件的进程(与您的程序运行时关闭它们几乎相同),并且如果您的程序出于某种原因挂起,那么这些组件也会挂起,因为组件永远不会被释放。

关于java - 如何防止我的 Java 程序在其他应用程序运行时出现滞后?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5232418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com