package com.xiaonei.thread;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
/**
*
要充分利用java的多线程特性,对于比较耗时,且用户无须等待通知的事件,可以考虑采用异步事件处理,
本文模拟发送邮件,以及一个自动更新的任务调度:
* @author Administrator
*
*/
public class ExecutorsTest {
/**
* 异步事件,发送邮件
*/
private ExecutorService service = Executors.newFixedThreadPool(8);
/**自动更新调度线程*/
private ScheduledExecutorService scService = Executors.newSingleThreadScheduledExecutor();
/**自动更新时间间隔*/
private static final int UPDATE_INTERVAL = 2; //s
private AtomicInteger counter = new AtomicInteger(); //计数器类
private static ExecutorsTest instance = new ExecutorsTest();
public static ExecutorsTest getInstance(){
return instance;
}
private ExecutorsTest() {
startUpdateMoniter();
}
private void startUpdateMoniter(){
scService.scheduleWithFixedDelay(new Runnable() {
@Override
public void run() {
System.out.println("任务自动更新:"+System.currentTimeMillis()+",次数:"+getNextId());
}
}, UPDATE_INTERVAL, UPDATE_INTERVAL, TimeUnit.SECONDS);
}
public int getNextId(){
return counter.incrementAndGet();
}
/**
* 发送邮件
* @param emails
* @return
*/
public boolean sendMail(String emails){
service.submit(new SendMailsTask(emails));
return true;
}
public static void main(String[] args) {
ExecutorsTest test = ExecutorsTest.getInstance();
System.out.println(test.sendMail("yangxinyan@qq.com"));
}
}
/**
* 异步发送邮件
*/
class SendMailsTask implements Runnable{
String emails = "";
public SendMailsTask(String emails) {
this.emails = emails;
}
@Override
public void run() {
System.out.println("--------发送邮件--:"+emails+Thread.currentThread().getName());
}
}
分享到:
相关推荐
大规模虚拟地形数据多线程异步调度算法.pdf
@scheduled任务调度使用详解及@scheduled与多线程和@Async异步任务结合使用
Linux内核使用内核线程来将内核分成几个功能模块,像kswapd、kflushd等, 这在处理异步事件如异步IO时特别有用。内核线程的使用是廉价的,唯一使用的资源就是内核栈和上下文切换时保存寄存器的空间。支持多线程的...
轻松解决普通poi形式导出Excel的中出现的栈溢出问题,此资源可实现千万级数据分批导出csv文件,csv大数据量导出(千万级别,不会内存溢出),多线程导出 ,生产环境已经很稳定的使用着
《POSIX多线程程序设计》深入描述了IEEE的开放系统接口标准——POSIX线程,通常称为Pthreads标准。本书首先解释了线程的基本概念,包括异步编程、线程的生命周期和同步机制;然后讨论了一些高级话题,包括属性对象、...
《JAVA多线程设计模式》PDF 下载 《Java线程 高清晰中文第二版》中文第二版(PDF) 前言 第一章 线程简介 Java术语 线程概述 为什么要使用线程? 总结 第二章 Java线程API 通过Thread类创建线程 使用Runable接口...
本, 书首先解释了线程的基本概念,包括异步编程、线程的生命周期和同步机制;然后讨论了, 一些高级话题,包括属性对象、线程私有数据和实时调度。此外,本书还讨论了调度的问, 题,并给出了避免错误和提高性能等问题...
据博主的理解,多线程就是该应用的主线程任命其他多个线程去协助它完成需要的功能,并且主线程和协助线程是完全独立进行的。不知道这样说好不好理解,后面慢慢在使用中会有更加详细的讲解。 2、多线程的使用: (1)...
书首先解释了线程的基本概念,包括异步编程、线程的生命周期和同步机制;然后讨论了 一些高级话题,包括属性对象、线程私有数据和实时调度。此外,本书还讨论了调度的问 题,并给出了避免错误和提高性能等问题的有...
因此,多线程是特殊形式的多任务处理。 第5页 Java程序设计案例教程-第8章-多线程编程全文共36页,当前为第5页。 进程 进程本质上是正在执行的程序。在UNIX操作系统中,每个应用程序的执行都在操作系统内核中登记一...
本文实例讲述了Python异步编程之协程任务的调度操作。分享给大家供大家参考,具体如下: 我们知道协程是异步进行的,碰到IO阻塞型操作时需要调度其他任务,那么这个调度规则或者是算法是怎样的呢?现在有以下几个...
这是c语言编译的理发店调度程序。实现多线程异步操作。
Gobrs-Async 是一款功能强大、配置灵活、带有全链路异常回调、内存优化、异常状态管理于一身的高性能多线程并发编程和动态编排框架。为企业提供在复杂应用场景下动态任务编排的能力。 针对于复杂场景下,异步线程...
模拟实现银行业务调度系统逻辑,具体需求如下: 银行内有6个业务窗口,1 - 4号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口。 有三种对应类型的客户:VIP客户,普通客户,快速客户(办理如交水电费、电话...
功能:GCD提供了一个易于使用的、基于任务的并发模型,可以将任务提交给系统,系统会自动管理线程的创建、销毁和调度,以实现最佳的性能和资源利用率。 应用:在iOS和macOS等苹果操作系统中广泛应用于多线程编程,可...
通过多智能体利用CPU 多线程功能同时执行多个动作的 决策。该方法在包括光伏发电、电动汽车和居民住宅电器 设备信息的某高维数据库上进行仿真验证。最后通过不同 住宅情境下的优化决策效果对比分析可知,所提在线...
模拟实现银行业务调度系统逻辑,具体需求如下: • 银行内有6个业务窗口,1 - 4号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口。 • 有三种对应类型的客户:VIP客户,普通客户,快速客户(办理如交水...
31. 全异步:任务调度流程全异步化设计实现,如异步调度、异步运行、异步回调等,有效对密集调度进行流量削峰,理论上支持任意时长任务的运行; 32. 跨语言:系统提供语言无关的 RESTFUL API 服务,第三方任意语言可...
多线程基础介绍.........................................................................................................................................15 定义多线程术语...................................