Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java pauseAWT()和sleepAWT()之间的区别是什么_Java_Awt - Fatal编程技术网

Java pauseAWT()和sleepAWT()之间的区别是什么

Java pauseAWT()和sleepAWT()之间的区别是什么,java,awt,Java,Awt,有人能帮我解释一下pauseAWT()和awtSleep()之间的区别吗?什么时候使用一个而不是另一个?junit.JFCTestCase.junit.JFCTestCase在junit的AWT测试材料中?我认为问题很清楚: pauseAWT:暂停awt事件队列,直到它被releaseAWT()释放或到达测试结束 awtSleep:不带参数:暂停测试最长时间,并允许AWT线程临时恢复/带参数:暂停测试最长时间,并允许AWT线程临时恢复 因此,第一个暂停AWT线程,第二个暂停测试并允许AWT线

有人能帮我解释一下pauseAWT()和awtSleep()之间的区别吗?什么时候使用一个而不是另一个?

junit.JFCTestCase.junit.JFCTestCase在junit的AWT测试材料中?我认为问题很清楚:

  • pauseAWT
    暂停awt事件队列,直到它被
    releaseAWT()
    释放或到达测试结束
  • awtSleep
    不带参数:暂停测试最长时间,并允许AWT线程临时恢复/带参数:暂停测试最长时间,并允许AWT线程临时恢复

因此,第一个暂停AWT线程,第二个暂停测试并允许AWT线程继续。请记住,AWT在一个单独的线程中运行,通常称为EDT(事件调度线程)。看起来您会同时使用这两种方法来确保测试的可复制状态。

是的,我认为这是因为有时AWT线程可能会与您的代码同时运行代码(如果您同时将内容放入AWT线程)。因为两者以不同的方式串联执行,所以很难进行测试。因此,这允许您在任何时候只有一个线程在执行,以使每次都相同。releaseAWT()的具体功能是什么?取消AWT线程的暂停。测试可以分别使用
pauseAWT
/
releaseAWT
暂停和取消暂停AWT事件线程的执行,但是
awtSleep()
可以暂停测试线程(您可能也可以使用
thread.sleep()暂停测试线程)
,但在这种情况下,在重新启动AWT线程和暂停当前线程执行之间可能存在竞争条件,并可能导致执行运行更难复制。单个语句覆盖了预期的同步障碍。