多线程的三个关键:
1.继承 Thread 类,重写 run 方法 2.线程工作代码在 run 方法中写 3.启动时,调用线程对象的 start()如下,教大家实现一个简单的多线程项目
一.首先写好一个界面,创建一个按钮对象并加入监听
点击按钮后会启动一个新的线程 ThreadDraw
来进行绘图操作
在这段代码中,this.setDefaultCloseOperation(3);
中的数字 3
是指定窗口的关闭操作的代码。在 Java Swing 中,使用整数常量来表示不同的关闭行为,常见的有以下几种:
JFrame.DO_NOTHING_ON_CLOSE
(常量值为0
):什么也不做,窗口保持打开状态,需要通过程序来处理关闭操作。JFrame.HIDE_ON_CLOSE
(常量值为1
):隐藏窗口,但是应用程序继续运行。JFrame.DISPOSE_ON_CLOSE
(常量值为2
):释放窗口资源,但应用程序继续运行。JFrame.EXIT_ON_CLOSE
(常量值为3
):退出应用程序。这表示当用户关闭窗口时,Java 虚拟机将退出,应用程序完全终止。
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TestGame01 extends JFrame {
public void initUI(){
this.setTitle("多线程平台");
this.setSize(1000,700);
this.setDefaultCloseOperation(3);
JButton buStart=new JButton("随机发射 ");
this.setLayout(new FlowLayout( ));
this.setVisible(true);
Graphics gs = this.getGraphics();
this.add(buStart);
buStart.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
ThreadDraw td= new ThreadDraw(gs);
td.start(); //3.启动时,调用线程对象的 start()
System.out.println("启动了一个线程对象");
}
});
}
public static void main(String[] args){
TestGame01 da = new TestGame01();
da.initUI();
}
}
二.继承Thread类,重写run方法,执行内容是随机画出圆,并向右移动。
这里创建了一个 Random
对象 ran
,用于生成随机数,使用 ran.nextInt(300)
方法生成在 [0, 300)
范围内的随机整数,分别赋值给 x
和 y
变量,这样就确定了初始的圆绘制位置 (x, y)
Thread.sleep(5)
让线程休眠5毫秒,注意单位,用来控制绘制速度,使得绘制的过程可以观察到,真正实现动画效果
最后的代码catch (Exception ef) {}用于异常处理,没有具体的处理逻辑
import java.awt.*;
import java.util.Random;
public class ThreadDraw extends Thread{ //1.继承Thread类
private Graphics gs;
public ThreadDraw(Graphics gs) {
this.gs=gs;
}
//重写run方法中,是要执行的代码
public void run() {
Random ran=new Random();
int x= ran.nextInt(300);
int y=ran.nextInt(300);
for(int i=0;i<400;i++){
gs.fillOval(x+i,y,20,20);
try{
Thread.sleep(5);
}catch(Exception ef){}}
}
}
三.效果展示(截图展示,动态效果请自己尝试)
标签:图画,gs,import,线程,new,Java,多线程,public From: https://blog.csdn.net/Flechazo41521/article/details/140757270