newFixedThreadPool线程池:

理解:
  1.固定线程数的线程池。
  2.通过Executors中的静态方法创建:
      public static ExecutorService newFixedThreadPool(int nThreads)或者
      public static ExecutorService newFixedThreadPool(int nThreads, ThreadFactory threadFactory)两种方式。
  3.返回的是ExecutorService对象线程池,例如:ExecutorService executorService = Executors.newFixedThreadPool(10)。
例子:
/**
* 线程池,实现Runnable接口
* @author Administrator
*
*/
public class ThreadPoolRunnable implements Runnable{
public void run(){
System.out.println(Thread.currentThread().getName()+"线程");
}
}
/**
* 实现Callable线程池
* @author Administrator
*
*/
public class ThreadPoolCallable implements Callable<String>{
@Override
public String call() throws Exception {
System.out.println(Thread.currentThread().getName()+"开始执行Callable接口.......");
return "线程执行完毕!";
}
}
//线程池测试类
public class TestThreadPoolRunnable {
public static void main(String[] args) throws InterruptedException, ExecutionException {
threadRunnable(5, 10);
threadCallable(3, 10);
} /**
* 实现Runnable接口线程池
*
* @param a
* 创建线程数量
* @param b
* 线程池总数
* @throws InterruptedException
* @throws ExecutionException
*/
public static void threadRunnable(int a, int b) throws InterruptedException, ExecutionException {
// 创建线程池
ExecutorService executorService = Executors.newFixedThreadPool(b);
for (int i = 0; i < a; i++) {
// 从线程池中调用线程
executorService.submit(new ThreadPoolRunnable());
}
} /**
* 实现Callable线程池
*
* @param a
* 创建线程数
* @param b
* 线程池总数
* @throws InterruptedException
* @throws ExecutionException
*/
public static void threadCallable(int a, int b) throws InterruptedException, ExecutionException {
ExecutorService executorService = Executors.newFixedThreadPool(b);
for (int i = 0; i < a; i++) {
Future<String> s = executorService.submit(new ThreadPoolCallable());
System.out.println(s.get());
}
}
}
结果:
pool-1-thread-1线程
pool-1-thread-3线程
pool-1-thread-2线程
pool-1-thread-5线程
pool-1-thread-4线程
pool-2-thread-1开始执行Callable接口.......
线程执行完毕!
pool-2-thread-2开始执行Callable接口.......
线程执行完毕!
pool-2-thread-3开始执行Callable接口.......
线程执行完毕!

多线程——newFixedThreadPool线程池的更多相关文章

  1. ExecutorService 建立一个多线程的线程池的步骤

    ExecutorService 建立一个多线程的线程池的步骤: 线程池的作用: 线程池功能是限制在系统中运行的线程数. 依据系统的环境情况,能够自己主动或手动设置线程数量.达到执行的最佳效果:少了浪费 ...

  2. Java多线程与线程池技术

    一.序言 Java多线程编程线程池被广泛使用,甚至成为了标配. 线程池本质是池化技术的应用,和连接池类似,创建连接与关闭连接属于耗时操作,创建线程与销毁线程也属于重操作,为了提高效率,先提前创建好一批 ...

  3. Java 多线程:线程池

    Java 多线程:线程池 作者:Grey 原文地址: 博客园:Java 多线程:线程池 CSDN:Java 多线程:线程池 工作原理 线程池内部是通过队列结合线程实现的,当我们利用线程池执行任务时: ...

  4. C#多线程之线程池篇3

    在上一篇C#多线程之线程池篇2中,我们主要学习了线程池和并行度以及如何实现取消选项的相关知识.在这一篇中,我们主要学习如何使用等待句柄和超时.使用计时器和使用BackgroundWorker组件的相关 ...

  5. C#多线程之线程池篇2

    在上一篇C#多线程之线程池篇1中,我们主要学习了如何在线程池中调用委托以及如何在线程池中执行异步操作,在这篇中,我们将学习线程池和并行度.实现取消选项的相关知识. 三.线程池和并行度 在这一小节中,我 ...

  6. C#多线程之线程池篇1

    在C#多线程之线程池篇中,我们将学习多线程访问共享资源的一些通用的技术,我们将学习到以下知识点: 在线程池中调用委托 在线程池中执行异步操作 线程池和并行度 实现取消选项 使用等待句柄和超时 使用计时 ...

  7. 重新想象 Windows 8 Store Apps (42) - 多线程之线程池: 延迟执行, 周期执行, 在线程池中找一个线程去执行指定的方法

    [源码下载] 重新想象 Windows 8 Store Apps (42) - 多线程之线程池: 延迟执行, 周期执行, 在线程池中找一个线程去执行指定的方法 作者:webabcd 介绍重新想象 Wi ...

  8. C#多线程和线程池问题

    static void Main(string[] args) { Thread threadA = new Thread(ThreadMethod); //执行的必须是无返回值的方法 threadA ...

  9. Qt多线程-QThreadPool线程池与QRunnable

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Qt多线程-QThreadPool线程池与QRunnable     本文地址:https:/ ...

随机推荐

  1. 【python】用python生成pdf文件

    转自:https://www.davidfischer.name/2015/08/generating-pdfs-with-and-without-python/ from reportlab.pla ...

  2. C# 如何提取字符串中的数字

    下面讲解如何在字符串当中抓取到数字 方法一.使用正则表达式 1.纯数字提取 string str = "提取123abc提取"; //我们抓取当前字符当中的123 string r ...

  3. [破解] nasca drm file -ver1.00

    在使用nasca系统中的下载相应的文件时,默认下载会被Nasca加密,可以通过下面的方式进行免除加密. 首先我们需要了解没有加密系统的默认下载过程: 当下载文件33333333333.pdf时,由于文 ...

  4. 10.21CRM项目(01)

    2018-10-21 13:35:19 crm第一天!放上初始源码! 后面等做完最后一天的手放上所有源码! 越努力越幸运!永远不要高估自己! 注意 多层for循环的时候,切记,不要名字重复!啦!!!! ...

  5. Mysql 全文搜索 Match Against用法

    全文检索在 MySQL 中就是一个 FULLTEXT 类型索引.FULLTEXT 索引用于 MyISAM 表,可以在 CREATE TABLE 时或之后使用 ALTER TABLE 或 CREATE ...

  6. logback logback.xml常用配置详解(一)<configuration> and <logger>

    logback logback.xml常用配置详解(一)<configuration> and <logger> 博客分类: Log java loglogback  原创文章 ...

  7. ELK(Elasticsearch6.0以上版本head插件安装)

    参考:https://www.cnblogs.com/Onlywjy/p/Elasticsearch.html Elasticsearch6.0不能使用命令直接安装head插件 修改配置文件/etc/ ...

  8. POJ 2259 - Team Queue - [队列的邻接表]

    题目链接:http://poj.org/problem?id=2259 Queues and Priority Queues are data structures which are known t ...

  9. 一个按成绩排序SQL的写法问题

    测试数据: SQL> select * from sscore; NAME       SCORE ---------- ----- aa            99 bb            ...

  10. 一些shell默认的变量

    测试脚本如下,我这里主要想测试$0,$1,$2,$n,$@,$*默认都代表了什么? #!/bin/sh echo '$1='$1 echo '$2='$2 echo '$@='$@ echo '$*= ...