在我正在使用的代码中
Thread.currentThread().sleep(sleepTime);
在代码的主要(非线程对象)部分。
它似乎工作正常,但我担心可能会有一些隐藏的陷阱稍后会咬我的屁股。
有没有更好的方法可以让你的主要进程静置一段时间?还是这是规定的方法?
编辑:
为了回答我为什么要这样做......
我有一个通过 HTTP 或 FTP 连接到远程主机并执行操作的进程。
换句话说...
东西...
连接远程...
用远程连接做事...
紧密连接...
更多东西...
根据需要重复。
我发现在非常非常罕见的情况下,这种连接会进入 la la land。它不会失败,也不会抛出任何异常,它就会消失。而且它是阻塞的,所以没有在线方式来设置计时器。
所以,我的解决方案是这样做......
东西...
启动带有连接的新线程...
在 MAIN 进程中(不在生成的线程中)进入带有计时器的无限循环并等待
a)连接线程完成其任务并将一些标志设置为“完成”
或者
b)等待一些预设的时间,如果连接线程还没有报告它已经完成,杀死它并继续。
我打算在主进程中休眠一段时间,醒来,看看 MAX_WAIT_TIME 是否已过期。如果没有,就回去睡觉,再等一会儿。
它似乎比坐在标准while循环中更有效(在处理器上),因为这确实会干扰连接线程执行其需要执行的操作。
我想我的问题真的是......这种方法有什么不安全的地方吗?我从答案中看到,鉴于我正在做的事情,看起来没有。也许我应该问是否有更标准化的方法?