java - 无法同时读取文件和发送邮件

标签 java multithreading memory-leaks

我正在读取日志文件,如果日志文件中发生任何令人担忧的事情,则发送邮件。这两个过程同时发生。但我看到的是行被正确读取,但有时邮件被跳过,所以我把邮件现在这不是一个独立的程序,它在容器中运行,所以当我停止 tomcat 服务器时,会出现内存泄漏问题,因为它无法停止我用来发送邮件的线程。任何人都可以帮忙..这就是我正在做的事情。

             --Read Log file--
                        |
                        |

new Thread(new Runnable() {
  @Override
  public void run() {
    SendMail mail = new SendMail();
    String mailDetails="";
    mailDetails = loginfo;
    loginfo = " ";
    mail.sendNotification()
}

最佳答案

答案是使用interrupt() 来停止线程。 This文章介绍了停止线程的一些背景知识和建议的替代方案,并讨论了为什么 Interrupt() 是答案

简单来说,发送邮件后您可以使用以下内容:

Thread thisThread = Thread.currentThread();
thisThread.interrupt();

关于java - 无法同时读取文件和发送邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9093568/

相关文章:

c++ - 函数静态变量析构函数和线程

java - 如何删除检查/放置的非原子使用并使代码线程安全?

c++ - 线程管理内存泄漏

java - 出于性能原因排序应该在java还是oracle中完成

java - 以编程方式从 SVN 存储库中提取文件的不同版本?

java - Java 中的生产者消费者问题 - 缺少同步?

python - 使用 Dowser 在 Python 中跟踪内存泄漏

java - 提高telnet连接读取输入速度

java - JScrollBar + JTextPane 与 HTML 未正确滚动到最大值

Delphi添加语言时内存泄漏