线程池的创建

package com.newer.cn;

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

public class Test1 {

    public static void main(String[] args) {
        // 创建线程池的方式

        // 创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程,在需要时使用提供的 ThreadFactory 创建新线程。
        ExecutorService pool = Executors.newFixedThreadPool(5);

        // 创建一个使用单个 worker 线程的 Executor,以无界队列方式来运行该线程。
        ExecutorService pool1 = Executors.newSingleThreadExecutor();

        // 创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们。
        ExecutorService pool2 = Executors.newCachedThreadPool();

        //创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行。
        ExecutorService pool3 = Executors.newScheduledThreadPool(3);

    }

}

举个例子

package com.newer.cn;

public class Demo implements Runnable {

    @Override
    public void run() {
        String name = Thread.currentThread().getName();
        System.out.println("执行当前线程的是:"+name);
        for(int i = 1;i <= 10;i++){
            System.out.println(name+":"+i);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        System.out.println("执行任务完毕");

    }

}
package com.newer.cn;

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

public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
         ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
         for(int i = 1;i <= 5;i++){
             Demo demo = new Demo();
             cachedThreadPool.execute(demo);
         }

    }

}
时间: 2024-10-26 16:51:58

线程池的创建的相关文章

多线程编程学习五(线程池的创建)

一.概述 New Thread的弊端如下:       a.每次New Thread新建对象性能差.       b.线程缺乏统一的管理,可能无限制的新建线程,相互之间竞争,极可能占用过多的系统资源导致死机 或者 OOM.       c.缺乏更多功能,如定时执行.定期执行.线程中断. Java提供的四种线程池的好处在于:       a.重用存在的线程,减少对象创建.消亡的开销,性能佳.       b.可有效控制最大并发线程数.提供系统资源的使用率,同时避免过多资源竞争,避免堵塞.     

5.Java线程池的创建和使用

线程池 构建一个新的线程是有一定代价的,因为涉及到与操作系统的交互.如果程序中需要使用大量生命周期很短的线程,就应该使用线程池. 将Runnable对象交给线程池来执行,就会有一个线程调用run方法,当run方法退出的时候,线程不会死亡,而是在池中准备为下一个请求提供服务. 另一个使用线程池的理由是为了减少并发编程的数目,创建大量线程会大大降低性能,甚至使虚拟机崩溃,而使用线程池能限制并发编程的总数. 线程池的创建和使用 而创建线程池对象需要使用执行器(Executors),注意要加s,Exec

线程池的优点及线程池的创建方式

什么是线程池 Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池. 在开发过程中,合理地使用线程池能够带来3个好处.第一:降低资源消耗.通过重复利用机制已降低线程创建和销毁造成的消耗.第二:提高响应速度.当任务到达时,任务可以不需要等到线程创建就能立即执行.第三:提高线程的可管理性.线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一分配.调优和监控.但是,要做到合理利用线程池,必须对其实现原理了如指掌.

使用线程池而不是创建线程

在我们开发程序时,若存在耗性能.高并发处理的任务时,我们会想到用多线程来处理.在多线程处理中,有手工创建线程与线程池2种处理方式,手工创建线程存在管理与维护的繁琐..Net线程池能够帮我们完成线程资源的管理工作,使用我们专注业务处理,而不是代码的细微实现.在你创建了过多的任务,线程池也能用列队把无法即使处理的请求保存起来,直至有线程释放出来. 当应用程序开始执行重复的后台任务,且并不需要经常与这些任务交互时,使用.Net线程池管理这些资源将会让性能更佳.我们可以使用ThreadPool.Queu

java 创建线程池的4中方式

Java线程池使用说明 线程池的作用:线程池作用就是限制系统中执行线程的数量.根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果:少了浪费了系统资源,多了造成系统拥挤效率不高.用线程池控制线程数量,其他线程排队等候.一个任务执行完毕,再从队列的中取最前面的任务开始执行.若队列中没有等待进程,线程池的这一资源处于等待.当一个新任务需要运行时,如果线程池中有等待的工作线程,就可以开始运行了:否则进入等待队列. java中常用线程池 newSingleThreadExecutor创建一

Java多线程01(Thread类、线程创建、线程池)

Java多线程(Thread类.线程创建.线程池) 第一章 多线程 1.1 多线程介绍 1.1.1 基本概念 进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能. 线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程.一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序. 简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程 1.1.2 单线程程序 - 从入口m

Java 线程池和多线程编程 ——线程池理解与创建

JDK1.5 引入了 Executor框架 ,对任务提交和执行进行解耦 , 定义任务后交由线程池执行. 线程池是由java.util.concurrent 包中Executors类的工厂方法创建线程池. -------------------------------------------------------------------------------- 创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程. public static ExecutorService n

使用Callable接口创建线程池

步骤: 创建线程池对象创建 Callable 接口子类对象提交 Callable 接口子类对象关闭线程池实例: class TaskCallable implements Callable<Integer> { @Override public Integer call() throws Exception { for (int i = 0; i < 10; i++) { System.out.println(Thread.currentThread().getName()+"

java中线程池创建的几种方式

java中创建线程池的方式一般有两种: 通过Executors工厂方法创建 通过new ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue)自定义创建 Executors工厂方法创建 package com.javaBase.LineDistancePond; import java.util.