gpt4 book ai didi

java - 在我的主代码中使用 Thread.currentThread.sleep() 有什么危险吗?

转载 作者:搜寻专家 更新时间:2023-11-01 03:58:34 25 4
gpt4 key购买 nike

在我的代码中我正在使用

Thread.currentThread().sleep(sleepTime);

在代码的主要(非 Thread 对象)部分。

它看起来工作正常,但我担心可能会有一些隐藏的陷阱,以后会咬我的屁股。

有没有更好的方法让您的主进程停留一段时间?或者这是规定的方法?

编辑:

回答我为什么这样做......

我有一个通过 HTTP 或 FTP 连接到远程主机并执行操作的进程。

换句话说...

东西...

连接到远程...

用远程连接做事...

关闭连接...

更多内容...

必要时重复。

我发现在非常非常罕见的情况下,连接会直接进入 la la land。它不会失败,不会抛出任何异常,它只是消失了。而且它是阻塞的,所以没有内联方式来设置计时器。

所以,我的解决方案是这样做......

东西...

开始新的线程并在其中连接...

在 MAIN 进程(不在生成的线程中)中使用计时器进入无限循环并等待

a) 连接线程完成它的任务并将一些标志设置为“完成”

b) 等待一些预设的时间,如果连接线程没有报告它已完成,则杀死它并继续。

是在主进程中,我打算 hibernate 一段时间,醒来,看看MAX_WAIT_TIME是否超时。如果没有,回去 sleep 再等一会儿。

这似乎(在处理器上)比坐在标准的 while 循环中更有效,因为这确实会干扰连接线程执行它需要做的事情的业务。

我想我的问题真的是……这种方法有什么不安全的地方吗?我从答案中看到,鉴于我正在做的事情,看起来好像没有。也许我应该问是否有更标准化的方法?

最佳答案

你在写什么样的应用程序?这很少是个好主意,如果您正在编写客户端 GUI,这尤其是是个坏主意 - 当线程处于 hibernate 状态时,它不会响应。

如果您能提供更多说明需要暂停的原因以及您正在编写的应用程序类型,那将会有所帮助。

另一件事 - 你的电话应该是:

Thread.sleep(sleepTime);

通过 currentThread() 调用它使它看起来像一个实例方法,但它不是 - 它只是一个普通的静态方法。您不能让任何其他线程 hibernate 。

您应该看看您的 IDE 是否有一个选项可以通过引用调用静态方法生成警告或错误 - 它会导致误导性代码(像这样)。

关于java - 在我的主代码中使用 Thread.currentThread.sleep() 有什么危险吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/640464/

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