import javax.swing.*;
import java.awt.*;
import java.util.Random;
/**
*
* try{
* Thread.sleep(2000);
* }catch(InterruptedException e){
* e.printStackTrace();
* }
* 会使线程在2秒内不会进入就绪状态,由于sleep状态会抛出异常,线程一段时间后可能进入运行或就绪状态
*/
public class SleepMethodTest extends JFrame {
private Thread t;
private static Color[] color={Color.BLACK,Color.BLUE,Color.cyan,Color.GREEN,Color.ORANGE,Color.ORANGE,
Color.YELLOW,Color.RED,Color.PINK,Color.LIGHT_GRAY
};
private static final Random rand =new Random();//创造随机对象
//getC方法,用于随机产生color类的对象,并且在产生线程的匿名内部类中使用getGraphics方法中获取Graphics对象
//使用该对象调用setColor方法为图形设置颜色
private static Color getC(){//获取随机颜色值的方法
return color[rand.nextInt(color.length)];
}
public SleepMethodTest(){
t=new Thread(new Runnable() {//创建匿名线程对象
//。描绘初始坐标
int x=30;
int y=50;
public void run() {
while (true){
try {
Thread.sleep(300);//线程休眠0.3秒
} catch (InterruptedException e) {
e.printStackTrace();
}
//获取组件绘图上下文对象
Graphics graphics =getGraphics();
graphics.setColor(getC());//设置绘图颜色
//绘制直线并递增垂直坐标,线段会根据y的变化自动调整
graphics.drawLine(x,y,1500,y++);
if(y>=180){
y=50;
}
}
}
});
t.start();//启动线程
}
public static void main(String[] args){
init(new SleepMethodTest(),100,100);
}
//初始化程序界面
public static void init(JFrame frame,int width,int height){
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(width,height);
frame.setVisible(true);
}
}
线程的sleep方法
最新推荐文章于 2023-02-20 17:09:44 发布