`
y806839048
  • 浏览: 1118848 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

多线程使用建议(最好用线程池)

阅读更多

 

在作为多线程编程中一般会用线程池去开启一个多线程:(单独开启也可)

 

 <!-- 定时任务 -->

<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">

<property name="corePoolSize" value="${task.core_pool_size}" />

<property name="maxPoolSize" value="${task.max_pool_size}" />

<property name="queueCapacity" value="${task.queue_capacity}" />

<property name="keepAliveSeconds" value="${task.keep_alive_seconds}" />

</bean>

 

要么用executorserivce生成定时任务的线程池

这里要注意既然用了线程池就要保证线程池是全局性的,获取单例方式实现,

这样才有线程池的意义,为了公用,这样的话一般会抽象成一个公用的类(单例)

 

 

 

 

类中:

@Component

public class SendEmailServiceImpl implements SendEmailService {

@Autowired

private JavaMailSender mailSender;

 

@Autowired

private TaskExecutor taskExecutor;

 

/* 使用SpringMail发送邮件 */

@Override

public void sendEmail(String sendFrom, String sendTo, String subject, String htmlMessage) throws MessagingException {

final MimeMessage message = mailSender.createMimeMessage();

MimeMessageHelper helper = new MimeMessageHelper(message, true, "utf-8");

helper.setSubject(subject);

helper.setFrom(sendFrom);

helper.setTo(sendTo);

helper.setText(htmlMessage, true);

 

taskExecutor.execute(new Runnable(){

 

@Override

public void run() {

try {

SendEmailServiceImpl.this.mailSender.send(message);

 

} catch (MailException e) {

System.out.println("Error Email send to " );

e.printStackTrace();

}

}

 

});

}

 

 

}

 

分享到:
评论

相关推荐

    C# 多线程 线程池 线程同步

    线程池是一种管理线程资源的有效机制,而线程同步则是确保多线程间正确交互的关键概念。本文将深入探讨这些主题。 首先,我们来了解**多线程**。在单线程环境下,程序按顺序执行任务,而在多线程中,程序可以同时...

    java+socket 及多线程线程池应用(IBM教程)

    而多线程和线程池在Java编程中则是提高系统效率、优化资源管理的关键技术。IBM作为全球知名的科技公司,其提供的教程往往具有权威性和深度。在这个“java+socket 及多线程线程池应用”的教程中,我们可以期待学习到...

    java多线程分页查询

    - **线程池管理**:频繁地创建新线程可能会导致性能下降甚至系统崩溃,建议使用`ExecutorService`等线程池工具进行线程管理。 - **资源管理**:确保每个线程完成任务后能够正确释放所占用的资源,避免内存泄漏等问题...

    C#.NET多线程实例6个(包括多线程基本使用,多线程互斥等全部多线程使用实例)

    本压缩包包含6个C#.NET多线程实例,涵盖了多线程的基本使用以及更复杂的互斥控制机制。下面,我们将详细探讨这些关键知识点。 1. **多线程基本使用** 多线程在C#中主要通过`System.Threading`命名空间来实现。创建...

    Java 利用多线程实现文件的分片下载

    刚学完多线程和线程池,以及线程爱好者。 使用场景及目标: 大文件的快速下载,经测试在100M带宽的网络下,下载一个40M的文件,不超过两秒钟,当然还得根据自己电脑的配置来讲。 其他说明: 文件如果特别小,而...

    C#.NET多线程实例6个(包括多线程基本使用,多线程互斥等全部多线程使用实例).rar

    这个压缩包包含六个C#.NET多线程的实例,涵盖了多线程的基本使用以及互斥等高级特性。以下是这些实例可能涉及的知识点详解: 1. **线程创建与启动** - `System.Threading.Thread` 类是.NET中创建新线程的基础,...

    使用线程池实现的Http上传下载实现

    2.也有很多我想加的东西(比如 身份验证、多线程下载同一个文件等)都没有加进去, 希望大家多多包含。另外如果大家发现有什么问题或好的建议,请及时告知。我。 PS:更改了我在博客中所说的,当以 Start(0, N) 启动...

    基于epoll的包含线程池、定时器、日志的多进程多线程的WebServer服务器源码.zip

    基于epoll的包含线程池、定时器、日志的多进程多线程的WebServer服务器源码.zip基于epoll的包含线程池、定时器、日志的多进程多线程的WebServer服务器源码.zip基于epoll的包含线程池、定时器、日志的多进程多线程的...

    安卓,线程池的使用 ,封装

    线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。本文将深入探讨Android中线程池的使用以及如何进行封装,以实现更灵活、高效的并发处理。 首先,我们需要理解Android...

    多线程正确调用,避免假死

    在编程领域,尤其是在C#这样的多任务环境中,多线程技术是提高程序性能的重要手段。然而,如果使用不当,多线程可能导致各种问题,其中“假死”(也...建议解压并详细阅读这些资料,以加深对多线程编程的理解和实践。

    C#用了多线程界面卡死

    由于多线程环境下的异常行为可能较为复杂,因此建议为每个线程设置适当的异常处理机制,确保程序的稳定性和健壮性。 4. **同步问题**:多线程程序中需要注意同步问题,如使用`Monitor`类或`lock`语句来保护共享资源...

    Java编程中线程池的最大风险规避

    对于一般的多线程程序而言,最常见的死锁情形涉及两个线程:线程A持有对象X的锁并等待对象Y的锁;同时,线程B持有对象Y的锁并等待对象X的锁。这种情况下,两个线程都不会释放手中的锁,因此陷入了永久的等待。 对于...

    C++多线程 最简易的多线程程序

    此外,性能优化和线程池的使用也是多线程编程的重要方面。 总之,本“C++多线程 最简易的多线程程序”是一个基础的多线程实现,适合初学者学习和实践。通过理解和应用上述知识点,你可以开始构建更复杂的多线程应用...

    线程池示例

    在实际应用中,使用线程池可以提高多线程处理的效率,尤其是在处理大量并发请求时。然而,需要注意的是,并非所有任务都适合线程池,如长时间运行的任务可能占用线程资源,影响线程池的效率。因此,合理评估任务性质...

    VS2015多线程

    【标题】"VS2015多线程" 涉及的知识点主要集中在C++编程语言中的多线程技术,以及如何在Visual Studio 2015开发环境中使用这些功能。多线程是现代软件开发中一个重要的概念,它允许程序同时执行多个任务,从而提高...

    线程池代码

    线程池是多线程编程中的一个重要概念,它是一种线程使用模式,通过预先创建一定数量的线程来处理任务,而不是每当有新任务提交时就创建新的线程。线程池的使用可以有效地减少系统资源的消耗,提高系统的响应速度和...

    Linux多线程编程手册

    在Linux多线程编程手册中,除了对各种API进行详细说明外,也会对常见的编程模式和设计原则进行指导,例如如何处理线程同步问题、死锁避免、线程池的使用等。此外,手册可能还会讨论特定于平台的特性,例如在Linux上...

    一个基于C#开发的多线程处理程序源代码

    在编程领域,多线程是实现并发执行任务的关键技术,特别是在C#这样的现代编程语言中。这个基于C#开发的多线程处理程序源代码,是利用Visual Studio 2005 (VS2005) 开发环境构建的,旨在演示如何有效地利用多线程进行...

    .net开发人员面试题-多线程.pdf

    3. 请描述多线程的意义,并介绍你什么时候使用多线程。 A. 能准确描述意义和优劣势。 B. 能描述一个准确的使用多线程的场景,但是无法系统的描述多线程的意义。 C. 什么都说不出来,或者说不到点子上。 4. 请描述几...

Global site tag (gtag.js) - Google Analytics