java - 在匿名操作监听器中运行线程?

标签 java

我知道如何使用 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/

相关文章:

java - JFreeChart DialPlot 减少标题差距

java - 将文本文件读入数组的字符串中

java - 将 txt 文件 POST 到远程 HTTP 服务器

java - InetAddress isReachable 方法是否有最短超时时间?

java - Java 中带有键绑定(bind)的 keyReleased() 方法?

java - Spring State Machine - 我应该创建多少个?

java - 有没有轻量级的java web服务框架或库?

java - Mybatis 的 resultMap 上的查询是否可以只返回部分结果?

java - 使用两个不同类型的 Guava ListenableFutures 的结果

java - 使用映射为使用 RestTemplate 的 rest 调用设置参数