gpt4 book ai didi

java - 有没有更好或替代的方法来跳过/避免在 Java 中使用 Thread.sleep(1000)?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:53:48 26 4
gpt4 key购买 nike

我正在测试一个重载视频,它加载了视频并在 Thread.sleep(1000) 之后;它播放第二个视频。但是一旦我循环播放一个接一个,它就会卡住。

当我删除所有那些 Thread.sleep(1000);它运行完美,没有卡住。

但是我需要延迟(但不是使用 Thread.sleep 方法),我们该怎么做呢?

package test;

public class Test
{
static String what = "0";
public static void main(String args[])
{
Load.video720p("/tmp/START.mp4"); // This is 8 second movie playing
new javax.swing.Timer(8000, new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
if (what.equals("0") )
{
/* After 8 seconds play 0.mp4 */
callMe();
what = "1";
} else {
/* After 8 seconds play 1.mp4 */
callMe();
what = "0";
}
}
}).start(); /* Keep on looping every 8 seconds. */
}

/* 8 seconds interval call me. */
public static void callMe()
{
try {

/* Try 0: Freeze/Do not play */
Load.video720p("/tmp/" + what + ".mp4");

/* Try 1: Does not change films (cant run)
new Thread(new Runnable() {
public void run() {
Load.video720p("/tmp/" + what + ".mp4", EVENT_TRIGGER_TRUE);
}
});*/

/* Try 2: Fails
try {
javax.swing.SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
Load.video720p("/tmp/" + what + ".mp4");
}
});
} catch (Exception e) {
System.err.println(e);
}*/

/* Try 3: Failes
try {
java.awt.EventQueue.invokeAndWait(new Runnable() {
public void run() {
Load.video720p("/tmp/" + what + ".mp4");
}
});
} catch (Exception e) {
System.err.println(e);
}*/

} catch (Exception e) {
System.out.println(e);
}
}
}

最佳答案

如果您在事件处理线程上调用 sleep(),那么是的,您的 GUI 将在此期间卡住。一个更好的主意是使用 SwingTimer这将允许您在指定延迟后触发第二个视频的播放,而无需调用 sleep()

关于java - 有没有更好或替代的方法来跳过/避免在 Java 中使用 Thread.sleep(1000)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8182223/

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