多线程异步事件、任务自动调度
?
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; //sprivate 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() {@Overridepublic 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;}@Overridepublic void run() {System.out.println("--------发送邮件--:"+emails+Thread.currentThread().getName());}}? 1 楼 overshit 2012-09-21 我在项目里写了一个类似功能,建议博主吧邮件补全,还有对线程状态进行监控处理,日志系统添加 2 楼 luxing44530 2012-09-21 akka actor? 3 楼 Coolala_cs 2012-09-21 nice! 4 楼 liuInsect 2012-09-22 没看出个什么问题啊、 5 楼 carlosfu 2012-09-22 这么牛啊,昨天发的 800多点击啊。牛