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