//测试的线程                                                           
public class Record implements Runnable {                         
                                                                  
    public int countDown = 10;                                    
    private static int taskCount = 0;                             
    private final int id = taskCount++;                           
                                                                  
    public Record() {                                             
    };                                                            
                                                                  
    public Record(int countDown) {                                
        this.countDown = countDown;                               
    }                                                             
                                                                  
    public String status() {                                      
        return "#" + id + "(" + countDown + "),";                 
    }                                                             
                                                                  
    @Override                                                     
    public void run() {                                           
        while(countDown-- > 0 ){                                  
            System.out.print(status());                           
            Thread.yield();                                       
        }                                                         
    }                                                             
                                                                  
}

=====================main===================

  一、CachedThreadPool 执行类

import java.util.concurrent.ExecutorService;                                  
import java.util.concurrent.Executors;                                        
                                                                              
import com.harry.handler.Record;                                              
                                                                              
public class CachedThreadPoolDemo {                                           
                                                                              
    public static void main(String[] args) {                                  
        //会不断的创建线程,当有已经完成任务的线程出现时会复用原来的线程。                                    
        ExecutorService executor = Executors.newCachedThreadPool();           
        for (int i = 0; i < 5; i++) {                                         
            executor.execute(new Record());                                   
        }                                                                     
        executor.shutdown();                                                  
    }                                                                         
}

二、FixedThreadPool     执行类    

import java.util.concurrent.ExecutorService;                        
import java.util.concurrent.Executors;                              
                                                                    
import com.harry.handler.Record;                                    
                                                                    
public class FixedThreadPoolDemo {                                  
                                                                    
    public static void main(String[] args) {                        
        //首先要设置规定的线程数量。                                             
        ExecutorService exec = Executors.newFixedThreadPool(5);     
        for (int i = 0; i < 5; i++) {                               
            exec.execute(new Record());                             
        }                                                           
        exec.shutdown();                                            
    }                                                               
}

三、SingleThreadPool 执行类    

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import com.harry.handler.Record;

public class SingleThreadExecutorDemo {

public static void main(String[] args) {
        //相当于线程数量为1的 FixedThreadPool
        
        //如果singleThreadEcecutor提交多个任务。那么这些任务会排队,
        //每个任务都会在下一个任务执行之前运行介绍,所有的任务都共用一个线程。
        ExecutorService exec = Executors.newSingleThreadExecutor();
        for (int i = 0; i < 5; i++) {
            exec.execute(new Record());
        }
        exec.shutdown();
    }
}

Executor类的更多相关文章

  1. MyBatis 源码分析——SqlSession接口和Executor类

    mybatis框架在操作数据的时候,离不开SqlSession接口实例类的作用.可以说SqlSession接口实例是开发过程中打交道最多的一个类.即是DefaultSqlSession类.如果笔者记得 ...

  2. 通过Thread Pool Executor类解析线程池执行任务的核心流程

    摘要:ThreadPoolExecutor是Java线程池中最核心的类之一,它能够保证线程池按照正常的业务逻辑执行任务,并通过原子方式更新线程池每个阶段的状态. 本文分享自华为云社区<[高并发] ...

  3. 转: Executor类

    Executor框架是指java 5中引入的一系列并发库中与executor相关的一些功能类,其中包括线程池,Executor,Executors,ExecutorService,Completion ...

  4. 【并发编程】Executor类的继承结构

    来自为知笔记(Wiz)

  5. Spark源码学习1.6——Executor.scala

    Executor.scala 一.Executor类 首先判断本地性,获取slaves的host name(不是IP或者host: port),匹配运行环境为集群或者本地.如果不是本地执行,需要启动一 ...

  6. Java线程池的原理及几类线程池的介绍

    刚刚研究了一下线程池,如果有不足之处,请大家不吝赐教,大家共同学习.共同交流. 在什么情况下使用线程池? 单个任务处理的时间比较短 将需处理的任务的数量大 使用线程池的好处: 减少在创建和销毁线程上所 ...

  7. 多线程之线程池Executor应用

    JDK1.5之后,提供了自带的线程池,以便我们更好的处理线程并发问题. Executor类给我提供了多个线程池创建的方式: 创建固定的线程池 Executors.newFixedThreadPool( ...

  8. java并发编程框架 Executor ExecutorService invokeall

    首先介绍两个重要的接口,Executor和ExecutorService,定义如下: public interface Executor { void execute(Runnable command ...

  9. Java线程池 Executor框架概述

    线程池的意义 循环利用线程资源,避免重复创建和销毁线程 线程池的任务是异步执行的,只要提交完成就能快速返回,可以提高应用响应性 Java线程池还有一个很重要的意义:Java线程池就是JDK 5 推出的 ...

随机推荐

  1. 浅谈HiZ-buffer

    最近在看基于GPU的遮挡裁剪相关的技术,它本身也是GPU-Driven Rendering Pipleline的其中一环.这项技术充分利用compute shader并行计算的威力,在加速遮挡查询的效 ...

  2. CF1108E2 Array and Segments (Hard version)

    线段树 对于$Easy$ $version$可以枚举极大值和极小值的位置,然后判断即可 但对于$Hard$ $version$明显暴力同时枚举极大值和极小值会超时 那么,考虑只枚举极小值 对于数轴上每 ...

  3. [C#.NET 拾遗补漏]11:最基础的线程知识

    线程的知识太多,知识点有深有浅,往深的研究会涉及操作系统.CUP.内存,往浅了说就是一些语法.没有一定的知识积累,很难把线程的知识写得全面,当然我也没有这个能力.所以想到一个点写一个点,尽量总结一些有 ...

  4. 微信小程序获取普通二维码

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  5. 18、Celery

    Celery 1.什么是Clelery Celery是一个简单.灵活且可靠的,处理大量消息的分布式系统 专注于实时处理的异步任务队列 同时也支持任务调度 Celery架构 Celery的架构由三部分组 ...

  6. SQL2005中清空操作日志的语句(SQL2008有所不同)

    方法一(我常用的): backup transaction 库名 with no_log go DBCC SHRINKDATABASE(库名) go 在VS中调用语句: string sb = &qu ...

  7. 【linux】-Makefile简要知识+一个通用Makefile

    目录 Makefile Makefile规则与示例 为什么需要Makefile Makefile样式 先介绍Makefile的两个函数 完善Makefile 通用Makefile的使用 通用的Make ...

  8. http 响应 ngx_http_send_header ngx_http_output_filter

    在解析完  http 请求报文后, 需要发出响应报文, 那么ngx 框架 提供了那些通用接口呢?如果自己设计将所用的模块的响应接口合并起来 你会怎么设计呢?? 响应头过滤函数主要的用处就是处理HTTP ...

  9. 对udp dns的思考2

    上一篇文章写道了udp 使用reuseport 多线程编程!!! 但是有几个问题需要考虑一下: 之前hash使用sip sport dip dport为key, 很正常同一个客户端回hash到同一个s ...

  10. linux kernel RCU 以及读写锁

    信号量有一个很明显的缺点,没有区分临界区的读写属性,读写锁允许多个线程进程并发的访问临界区,但是写访问只限于一个线程,在多处理器系统中允许多个读者访问共享资源,但是写者有排他性,读写锁的特性如下:允许 ...