zoukankan      html  css  js  c++  java
  • JAVA四种线程池

    Java通过Executors提供四种线程池,分别为:
    newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,
    可灵活回收空闲线程,若无可回收,则新建线程。
    newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,
    超出的线程会在队列中等待。
    newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。
    newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,
    保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。

    (1).newCachedThreadPool
    ExcutorService cachedThreadPool = Executors.newCacheThreadPool();
    for(int i = 0 ; i<10; i++) {
    final int index = i;
    try {
    Thread.sleep(index.1000);
    } catch (InterruptedException e ) {
    e.printStackTrace();
    }
    }
    cachedThreadPool.execute(new Runable() {
    @Override
    public void run() {
    System.out.println(index);
    });
    }
    (2).创建定长 线程池
    ExecutorService exePool = Executors.newFixedThreadPool(20);
    exePool.execute( new validateDataTheadNew(
    begin,begin+200,changeValue,allDatas,rightDatas,errorDatas,paramaters));
    private class validateDataTheadNew implements Runnable {
    //变量 参数
    //变量 参数

    public validateDataTheadNew(Integer begin,Integer end ,IntValue changeValue,List<ImportStNoView> importDatas,List<ImportStNoView> rightDatas,List<ImportStNoView> errorDatas,String[] paramaters){
    this.begin = begin;
    this.end = end;
    this.changeValue = changeValue;
    this.importDatas = importDatas;
    this.rightDatas = rightDatas;
    this.errorDatas = errorDatas;
    this.paramaters = paramaters;
    } //这段构造方法

    public void run () {
    try{

    SessionFactory sessionFactory = shopterNoApplyDao.getHibernateTemplate().getSessionFactory();
    Session session = sessionFactory.openSession();
    TransactionSynchronizationManager.bindResource(sessionFactory,
    new SessionHolder(session));

    for(int i = begin;i<end;i++){
    ImportStNoView report = importDatas.get(i);
    String errorInfo = validateExpressData(report,paramaters);
    if(StringUtils.isNotEmpty(errorInfo)){
    report.setErrorInfo(errorInfo);
    errorDatas.add(report);
    }else{
    rightDatas.add(report);
    }
    }
    changeValue.setIntValue(1);

    TransactionSynchronizationManager.unbindResource(sessionFactory);
    SessionFactoryUtils.closeSession(session);

    }catch(Exception e ){
    e.printStackTrace();
    changeValue.setIntValue(2);
    }
    }

    }

    }

    //TransactionSynchronizationManager.bindResource( sessionFactory,new SessionHolder(session));
    在调用一个需要事务的组件的时候,管理器首先判断当前调用
    (即当前线程)有没有一个事务,如果没有事务则启动一个事务,并把事务与当前线程绑定
    Spring 使用TransactionSynchronizationManager的 bindResource方法、
    将当前线程与一个事务绑定

    (3). ScheduleExecutorService scheduledThreadPool
    = Executors.newScheduledThreadPool(5);
    scheduledThreadPool.schedule ( new Runable() {
    @Override
    public void run () {
    system.out.println("delay 3 seconds");
    }
    },3,TimeUnit.seconds);
    //表示 延迟 3秒 执行
    //
    scheduledThreadPool.scheduleAtFixedRate(new Runnable() {
    @Override
    public void run() {
    System.out.println("delay 1 seconds, and excute every 3 seconds");
    }
    }, 1, 3, TimeUnit.SECONDS);
    //延迟一秒后 每三秒执行一次
    (4) ExecutorService single
    = Executors.newSingleThreadExecutor();
    for(int i = 0 ;i<10;i++ ) {
    final int index = i;
    singleThreadExecutor.execute(new Runable() {
    @Override
    public void run () {
    system.out.println(index);
    Thread.sleep(2000);
    }
    )
    }
    线程池的作用 :
    就是限制系统中执行线程的数量'
    任务执行 等待 队列

    ExecutorService 真正的线程池接口。

    ScheduledExecutorService 能和Timer/TimerTask类似,解决那些需要任务重复执行的问题。

    ThreadPoolExecutor ExecutorService的默认实现。

    ScheduledThreadPoolExecutor
    继承ThreadPoolExecutor的ScheduledExecutorService接口实现,周期性任务调度的类实现。


  • 相关阅读:
    对OpenCV学习笔记(1)遗留问题的思考
    转:争论32bit/64bit的人都搞错了方向,需要分清楚IA64和x64
    Win8_64bit+VS2012下的OpenCV学习笔记(1)
    pikachu练习平台-不安全的文件下载
    pikachu练习平台-文件包含漏洞(Files Inclusion)
    pikachu练习平台-RCE(远程系统命令、代码执行)
    pikachu练习平台(SQL注入 )
    pikachu练习平台(CSRF(跨站请求伪造) )
    pikachu练习平台(XSS-漏洞测试案例(cookie的窃取和利用、钓鱼攻击、XSS获取键盘记录))
    pikachu练习平台(XSS(跨站脚本))
  • 原文地址:https://www.cnblogs.com/lingding/p/10399448.html
Copyright © 2011-2022 走看看