我目前在我的大学里上 Java 线程的课程,今天的练习是关于创建两个线程。 线程 A打印从 1 到 9 的随机数,没有休眠,线程 B从 1000 到 9999 打印 50 个休眠,这是一个无限循环,直到我决定按下停止按钮,它是一个中断两个线程的 JButton 。事情是,我在尝试用一个按钮停止线程时遇到了一些麻烦,主要是想找出如何解决它,以及如何为此目的创建一个 actionEvent。
这是我到目前为止的代码:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class RandomNumbers extends Thread {
long time;
long min;
long max;
private JFrame window;
private JButton stopButton;
public RandomNumbers(long min, long max, long time) {
this.min = min;
this.max = max;
this.time = time;
new Window();
}
public void run() {
try {
while (true) {
System.out.println((int) ((Math.random() * max) + min));
Thread.sleep(time);
}
} catch (Exception e) {
System.out.println("I was interrupted!");
}
}
public class Window {
public Window() {
window = new JFrame("Stop Button");
stopButton = new JButton("Stop");
stopButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
// ThreadA.interrupt(); //problem in here , what to do ? //****
// ThreadB.interrupt();
}
});
window.getContentPane().add(stopButton);
window.setSize(100, 100);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setVisible(true);
}
}
public static void main(String[] args) throws InterruptedException {
Thread threadB = new RandomNumbers(1, 9, 50);
Thread threadA = new RandomNumbers(1000, 8999, 0);
threadB.start();
threadA.start();
}
}
此代码还有另一个问题,它将创建2 个停止按钮,每个线程 1 个,因为它不是构造函数。我有点迷路了,所以我需要一些指导。任何帮助表示赞赏,非常感谢!