对于发送邮件等类似的需要调用外部服务的功能,等待时间无法预测。如果不是实时性很强的话,最好的方法是把它们变成异步调用。
想法很简单,就是另外再起一个线程,在新线程中完成发送即可。在Java中,可以通过ThreadExcutor来实现线程池等类似的管理工作。
1. 在初始化的时候调用threadExecutor = Executors.newFixedThreadPool( 10 );来创建一个线程池
2. 在用户点击发送的时候,通过下面的语句起一个新线程
threadExecutor.execute(new SendTask( ... ));
3. SendTask是一个私有类,继承了Runnable
private class SendTask implements Runnable
在SendTask的run()函数中完成实际的发送邮件工作即可