多线程跑调度_多线程异步事件、任务自动调度

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());

}

}

2

3

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2012-09-21 11:59

浏览 2080

评论

5 楼

carlosfu

2012-09-22

这么牛啊,昨天发的 800多点击啊。

4 楼

liuInsect

2012-09-22

没看出个什么问题啊、

3 楼

Coolala_cs

2012-09-21

nice!

2 楼

luxing44530

2012-09-21

akka actor?

1 楼

overshit

2012-09-21

我在项目里写了一个类似功能,建议博主吧邮件补全,还有对线程状态进行监控处理,日志系统添加

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值