我知道如何使用 Runnable 类实现线程,但是当我的网络任务从 Action 监听器的匿名类内部执行时,我在实现线程时遇到问题。
考虑这个代码,它位于实现 ActionListener
的类中
public class Main extends JFrame implements ActionListener, Runnable {
...
b1 = new JButton("OK");
b1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
MySocket sock1 = new SMTPSocket(s1.getText(),fromField.getText(),subjectField.getText());
}
}
});
}
现在,我想运行这段代码,
MySocket sock1 = new SMTPSocket(s1.getText(),fromField.getText(),subjectField.getText());
在线程中,但由于它是从 Action 监听器的匿名类执行的,我该如何在线程中执行它?
最佳答案
创建一个名为 startThread
的方法,并在按钮点击监听器上调用此方法
并在该方法中编写一个将执行您的代码的线程..
试试这个..
b1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
startThread();
}
}
});
和startThread
方法将是这样的..
private void startThread() {
new Thread() {
public void run() {
MySocket sock1 = new SMTPSocket(s1.getText(),fromField.getText(),subjectField.getText());
}
}.start();
}
关于java - 在匿名操作监听器中运行线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30286705/