java for循环sleep不起作用
时间: 2023-12-07 11:40:06 浏览: 115
在Java中,使用for循环和sleep函数可以实现每隔一定时间执行一次循环。但是,在循环中调用sleep函数时,可能会出现无法中断线程的问题。这是因为线程在sleep期间处于阻塞状态,无法响应中断请求。为了解决这个问题,可以使用Thread.interrupted()方法来检查线程是否被中断,并在需要时手动抛出InterruptedException异常来中断线程。以下是一个示例代码:
```java
for(int i = 0; i < 10000 && !Thread.interrupted(); i++) {
System.out.println(i);
if(i % 100 == 0 && i != 0){
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
//手动抛出InterruptedException异常来中断线程
Thread.currentThread().interrupt();
e.printStackTrace();
}
}
}
```
相关问题
java for循环霓虹灯
以下是Java实现循环霓虹灯的代码:
```java
import java.awt.Color;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class NeonLight extends JFrame implements Runnable {
private static final long serialVersionUID = 1L;
private JLabel[] labels = new JLabel[10];
public NeonLight() {
super("循环霓虹灯");
setLayout(new FlowLayout());
for (int i = 0; i < labels.length; i++) {
labels[i] = new JLabel("Java");
labels[i].setOpaque(true);
add(labels[i]);
}
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500, 100);
setVisible(true);
}
@Override
public void run() {
while (true) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
Color temp = labels[0].getBackground();
for (int i = 0; i < labels.length - 1; i++) {
labels[i].setBackground(labels[i + 1].getBackground());
}
labels[labels.length - 1].setBackground(temp);
}
}
public static void main(String[] args) {
NeonLight neonLight = new NeonLight();
Thread thread = new Thread(neonLight);
thread.start();
}
}
```
用Java实现for循环分发数据 每分发一个 sleep 三秒钟
可以使用Java的for循环和Thread.sleep()方法来实现。
以下是示例代码:
```java
for (int i = 0; i < data.length; i++) {
// 分发数据
distributeData(data[i]);
try {
// 睡眠3秒钟
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
```
其中,data为需要分发的数据数组,distributeData()方法为分发数据的方法。在每次分发完数据后,使用Thread.sleep()方法让线程睡眠3秒钟。注意要捕获InterruptedException异常。
阅读全文