gpt4 book ai didi

Java 控制台应用程序已锁定

转载 作者:可可西里 更新时间:2023-11-01 11:47:50 24 4
gpt4 key购买 nike

Java 不是我的主要编程语言,所以我的专业知识通常在这方面有限。

场景

此应用应该像服务或守护进程一样无限期地执行。它的主要目的是在数据库中处理一些由其他进程插入的行。

该应用程序有时会通过 System.out.println 吐出日志消息。它还使用其他一些日志文件。我之前使用的是 log4j,但目前已禁用。

如果有帮助的话,我也在 Windows Server 环境中运行它。我现在不能使用 linux。

问题

问题是,在极少数情况下,我发现 staging/prod env 中的应用程序被锁定或者似乎没有进一步处理任何数据库行。在我按屏幕上的 Enter 几次后,它会继续前进并像往常一样开始处理。这很奇怪,因为我不期待用户的任何输入。应用程序的任何输入要么来自命令行,要么来自数据库。

而且我确定这不是数据库问题。该应用程序不等待任何表锁定。它可能与某些文件锁定或 System.out 流被锁定有关。后来我没有想到可能性,直到我看到屏幕上的一些击键“唤醒”了应用程序。

所以我想知道是否有人可以指出我可以进一步调试的方向。

最佳答案

Microsoft 以其无限的智慧制作了控制台窗口,使您可以使用鼠标选择一个矩形区域的字符。到目前为止一切顺利。

据推测,为了让用户在文本滚动时更容易选择文本,他们(以他们无限的智慧)卡住由终端窗口,如果它在您选择文本时尝试发出文本。 (*)

碰巧的是,只要您用鼠标单击一个控制台窗口,他们(以他们无限的智慧)将窗口置于文本选择模式,正如存在所证明的那样一个白色的小方 block 。

这是非常不幸的,因为单击窗口也是我们为了简单地将窗口置于前台所做的事情。但是这里有一个巨大的陷阱:如果控制台窗口还没有在前台,那么单击它会将它带到前台。但如果控制台窗口已经在前台,则单击它会进入选择模式。 (当然,大多数人很少知道、关心或不想被打扰窗口是否已经在前台。)

因此,总结一下:尽量不要点击您的窗口。如果需要,请仅单击标题。如果您不小心单击了窗口,请按 [Enter] 键或再次单击以使小的白色选择矩形消失。

因为只要小的白色选择矩形在那里,你的程序就会被卡住。


(*) 现在,他们可以很容易地在选择时卡住窗口的显示而不卡住进程;他们本可以做到这一点,以便进程的输出不断被缓冲,然后在选择完成后转储到屏幕上,但我猜他们太忙于统治世界的计划而无暇解决这个问题。我什至无法开始思考到目前为止,由于 Microsoft 控制台窗口在选择模式下闲置,而人们以为他们正在处理数据,因此全世界浪费了多少时间(= 金钱)。

关于Java 控制台应用程序已锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39707118/

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