62,621
社区成员
发帖
与我相关
我的任务
分享/**
* 原题:当用户单击"启动线程"时,在控制台持续打印一段话
* 当用户单击"中断线程"时,控制台结束打印.
*/
package com.thread;
import java.awt.Container;
import java.awt.event.*;
import javax.swing.*;
public class print extends JFrame {
Thread t = new Thread(new Runnable() { // 实现Runnable接口
public void run() {
while (true) {
System.out.println("Java test");
t.yield();// 通知线程礼让
try {
t.sleep(2000);
} catch (Exception e) {
e.printStackTrace();
}
}
}
});
public print() {
Container c = getContentPane();
JButton b1 = new JButton("启动线程");
JButton b2 = new JButton("中断线程");
setLayout(null); // 按钮布局方式
b1.setBounds(10, 70, 120, 30);// 按钮b1位置
b2.setBounds(160, 70, 120, 30);// 按钮b2位置
c.add(b1);
c.add(b2);
t.setPriority(1);// 设定线程优先级
b1.addActionListener(new ActionListener() {// b1按钮事件
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (!t.isAlive()) {
t.run();
}
}
});
b2.addActionListener(new ActionListener() {// b2按钮事件
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (t.isAlive()) {
t.interrupt();
}
}
});
// 窗体样式
setTitle("控制线程");
setSize(300, 200);
setResizable(false);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setVisible(true);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new print();
}
}