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. C语言程序设计--执行命令

    1.system函数 1.1函数原型 int system(char *command); 1.2解释 system()会调用fork()产生子进程,由子进程来调用/bin/sh -c string来 ...

  2. 基础知识——CentOS7操作系统的安装图文教程

    学习了很久的Linux操作系统,也看了不少的资料,对于操作系统的安装,相对来说都在不断的改进,安装的难度也在不断的降低,操作步骤也变得非常的简单了. 有很多CentOS系统的安装教程,但是比较不全面或 ...

  3. python中的 set 中的元素

    set存储的元素和dict的key类似,必须是不变对象,因此,任何可变对象是不能放入set中的.

  4. js20130114

    01.js(FirstJavaScrpty)第一个个javascript 1.  Document.write("");//这个是在页面上输出一段信息 ;  例如:document ...

  5. 面向对象。OOP三大特征:封装,继承,多态。 这个讲的是【封存】

    class Ren { private $name; private $sex; private $age; //年龄必须在18-50之间 function __constuct($v) { $thi ...

  6. 依赖注入容器之Castle Windsor

    一.Windsor的使用 Windsor的作为依赖注入的容器的一种,使用起来比较方便,我们直接在Nuget中添加Castle Windsor,将会自动引入Castle.Core 和 Castle.Wi ...

  7. 安装MAC的ReactNative环境

    brew install node brew install watchman npm config set registry https://registry.npm.taobao.org --gl ...

  8. Linux下TCP/socket编程

    写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文! 本博客全网唯一合法URL:ht ...

  9. Copycat - Overview

    Copycat’s primary role is as a framework for building highly consistent, fault-tolerant replicated s ...

  10. js日常

    JS中变量后面有个问号是什么意思? return n?n*arguments.callee(n-1):1;JS中变量后面有个问号是什么意思?然后 后面一个:1又是什么意思?     问号与冒号要连在一 ...