Tag: sleep

如果线程已被中断,Thread.sleep会抛出吗?

给定一个在没有被阻塞的情况下被中断的线程(即没有抛出InterruptedException),该线程在以后尝试睡眠时是否会抛出InterruptedException? 文档没有明确说明: InterruptedException – 如果有任何线程中断了当前线程。 抛出此exception时,将清除当前线程的中断状态。

while循环中的Thread.sleep()

我注意到NetBeans警告我在我的Java代码中使用while循环中的Thread.sleep(),所以我已经对这个主题进行了一些研究。 主要问题似乎是性能问题,当计数器仍处于hibernate状态时,你的状态可能会变为真,因此在等待下一次迭代时会浪费挂钟时间。 这一切都很有道理。 我的应用程序需要联系远程系统并定期轮询操作状态,等待操作完成后再发送下一个请求。 目前,代码在逻辑上执行此操作: String state = get state via RPC call while (!state.equals(“complete”)) { Thread.sleep(10000); // Wait 10 seconds state = {update state via RPC call} } 鉴于环境正在检查远程操作(这是一个有点昂贵的过程,因为它运行了几秒钟),这是一个在while循环中有效使用Thread.sleep()吗? 有没有更好的方法来构建这个逻辑? 我已经看到了一些我可以使用Timer类的例子,但是我没有看到它的好处,因为它似乎仍然归结为上面同样简单的逻辑,但是引入了更多的复杂性。 请记住,在这种情况下,远程系统既不是我的直接控制,也不是用Java编写的,因此在这种情况下将此端更改为“合作”不是一种选择。 我更新应用程序状态值的唯一选择是创建和发送XML消息,接收响应,解析它,然后提取我需要的信息。 任何建议或意见都是最受欢迎的。

Java Sleep无法在循环中工作

我想在我的java程序中做的是,当我按下按钮时,它会按时间间隔在文本textfield中显示文本。 即按下按钮然后弹出一个jFrame ,并且有一个标签显示如下文字:第一秒:“1st”然后是1秒的时间滞后然后是第二件事:“第二件” 我是一个新手,我试图谷歌这个问题,但我找不到解决方案,即使3-4小时后我尝试了很多东西:睡觉,尝试抓住… 请将答案写得非常简单。 这是我的代码:在下面的代码中,当按下按钮时,jFrame会出现但是其中有一个白色屏幕,当总和结束时,它的屏幕变为灰色并显示答案…. private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) { See.setVisible(true);//See is the JFrame t007.setVisible(true);//Label in See l2.setVisible(true);//TextField in See int ran, g, d, col, ran2; double y = 1000 * (Double.parseDouble(t2.getText())); int x = (int) y; d = 0; double c = Math.pow(10, Integer.parseInt(t1.getText())); col = Integer.parseInt(t3.getText()); for (g = 0; g (c […]

操作后Java Swing重启计时器

我需要我的计时器重新启动或至少在执行一行代码后添加另一个延迟。 private static class ButtonHandler implements ActionListener { public void actionPerformed (ActionEvent e) { final JButton button = (JButton)e.getSource(); Timer timer = new Timer(1000, new ActionListener() { public void actionPerformed(ActionEvent e) { String tc = random(); them.setText(“They chose: ” + tc + “!”); if (button == rock) { whoWins(“rock”, tc); } else if (button == […]

覆盖Thread.sleep()

我们有几个扩展基类的类。 我们注意到我们使用退出一些睡眠方法,我们想在睡眠发生时记录。 有没有办法覆盖Thread.sleep方法,我可以在其中添加一些自定义逻辑(即日志记录),然后只调用实际的Thread.sleep()? 这样我就不必更改Thread.sleep在我的基类中使用的所有地方。 我也对其他选择持开放态度。

如何暂停java线程一小段时间,如100纳秒?

我知道Thread.sleep()可以让java线程暂停一段时间,比如某些毫秒和某个纳秒。 但问题是这个函数的调用也会导致开销。 例如,如果我想要一个线程暂停100纳秒,我调用Thread.sleep(0,100) 。 这个过程的全部成本是invocation_cost + 100 nanosceonds ,这可能比我想要的要大得多。 我怎么能避免这个问题,实现我的目的呢? 我需要这个的原因是我想离线进行模拟。 我描述了任务的执行时间; 现在我想通过在同一时间段内挂起一个线程来模拟这个执行时间。 谢谢!

Java – thread.sleep的替代品

我需要暂停一个while循环一段特定的毫秒数。 我尝试过使用Thread.sleep(持续时间),但它不准确,尤其是在循环方案中。 毫秒精度在我的程序中很重要。 这是算法,我不希望在expectElapsedTime经过之前返回检查条件。 while (condition) { time = System.currentTimeMillis(); //do something if (elapsedTime(time) < expectedElapsedTime) ) { pause the loop // NEED SUBSTITUTE FOR Thread.sleep() } // Alternative that I have tried but not giving good results is while ((elapsedTime(time) < expectedElapsedTime)) { //do nothing } } long elapsedTime(long time) { long diff = […]

程序在Thread.sleep()和Timer期间冻结

原始问题: 该方法应该将在JFrame上显示的图像逐渐改变为另一图像。 但是,如果没有某种方法可以减慢速度,它似乎只会从一个图像变为新图像。 为了减慢速度,我输入了一个Thread.sleep(1000),这样就不会立即发生变化。 然而,有了这一行,我的程序完全冻结了。 没有错误信息,没有任何内容。 有人可以帮帮我吗? 建议一种更好的方法来减慢速度,或者如何解决这个问题。 澄清:int k是变化中渐进步骤的数量。 k = 1将是瞬间变化。 任何更大的东西都是渐进的变化。 int l同时控制每个图像显示的比例。 public void morphImg(int width, int height, BufferedImage morphImage, int k) { //creates new image from two images of same size BufferedImage image2 = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); for (int i = 0; i < width; i++) { for (int […]