我正在尝试用Java做一些事情,我需要在while循环中等待/延迟几秒钟。
while (true) {
if (i == 3) {
i = 0;
}
ceva[i].setSelected(true);
// I need to wait here
ceva[i].setSelected(false);
// I need to wait here
i++;
}
我想构建一个step sequencer,我是Java新手。有什么建议吗?
使用这个:
public static void wait(int ms)
{
try
{
Thread.sleep(ms);
}
catch(InterruptedException ex)
{
Thread.currentThread().interrupt();
}
}
然后,您可以在任何地方调用此方法,如:
wait(1000);
使用线程。睡眠(1000)
;
1000
是程序将暂停的毫秒数。
try
{
Thread.sleep(1000);
}
catch(InterruptedException ex)
{
Thread.currentThread().interrupt();
}
如果要暂停,请使用java。util。同时发生的时间单位
:
TimeUnit.SECONDS.sleep(1);
睡一秒钟或几秒钟
TimeUnit.MINUTES.sleep(1);
睡一会儿。
由于这是一个循环,因此存在一个固有的问题-漂移。每次你运行代码然后睡觉的时候,你都会有点偏离运行的方向,比如说,每秒钟。如果这是一个问题,那么不要使用睡眠
。
此外,睡眠在控制方面不是很灵活。
对于每秒或每延迟一秒运行任务,我强烈建议使用ScheduledExecutorService
和scheduleAtFixedRate
或scheduleWithFixedDelay
。
例如,要每秒运行方法myTask
(Java 8):
public static void main(String[] args) {
final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
executorService.scheduleAtFixedRate(App::myTask, 0, 1, TimeUnit.SECONDS);
}
private static void myTask() {
System.out.println("Running");
}
在Java 7中:
public static void main(String[] args) {
final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
executorService.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
myTask();
}
}, 0, 1, TimeUnit.SECONDS);
}
private static void myTask() {
System.out.println("Running");
}
问题内容: 如何在Python中进行时间延迟? 问题答案: 这是另一个示例,其中某件事大约每分钟运行一次:
问题内容: 因此,在这段代码中: 似乎在FileConverter方法尚未完成调用之前,消息对话框窗口弹出窗口的速度就太快了。我想知道JOptionPane的放置是否正确,或者是否可以将消息延迟到该方法完成处理之前? 问题答案: 您可以使用SwingWorker。 在这里看看Java教程。
问题内容: 我有一个简短的问题,希望有人能帮助我。 请查看以下代码片段: 有人可以帮我解决这个问题吗?我想实现一种类似“工具提示”的行为:您用鼠标输入一个区域。如果鼠标停留在该位置,请执行某些操作。 问题答案: 在您的方法中延迟2秒启动计时器,该计时器将调用您想要执行的任何操作。 设置一个新的处理程序(),如果该计时器尚未关闭,则将其停止。 基本上,您知道如果尚未调用鼠标,鼠标仍会在那里。计时器将
问题内容: 我正在尝试用Java做某事,而我需要一些东西在while循环中等待/延迟几秒钟。 我想构建一个步进音序器,并且对Java还是陌生的。有什么建议么? 问题答案: If you want to pause then use java.util.concurrent.TimeUnit: TimeUnit.SECONDS.sleep(1); TimeUnit.MINUTES.sleep(1);
问题内容: 我有一个数据库,其中包含以二进制Blob存储的图片数据。该文档说数据是使用LZW编码的。我以为我可以使用Java库中的Zip或GZip输入流对其进行解码,但是它不起作用- 我遇到了一个例外,即数据格式不正确。 根据我的阅读,该库使用DEFLATE,而不是LZW。另外,我已经阅读了有关使用LZW算法的许可问题。 我可以用什么来解码数据?有图书馆吗?我必须自己实施吗?许可问题呢? 问题答案
我想在我的小部件构建完成后,在一定的延迟后执行一个函数。在Flatter中,这样做的惯用方法是什么? 我试图实现的是:我想从默认的FlutterLogo小部件开始,然后在一段时间后更改其样式属性。