资讯专栏INFORMATION COLUMN

实现线程池的代码

miya / 1747人阅读

摘要:以下抛异常,因为线程池都没了线程池之后提供的线程池的工厂类用来生成线程池类中的静态方法创建一个可重用固定线程数的线程池参数创建线程池中包含的线程数量返回值接口返回的是接口的实现类对象我们可以使用接口接收面向接口编程线程池接口用来从线程池中获


以下抛异常,因为线程池都没了


package com.itheima.demo02.ThreadPool;

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

/*

线程池:JDK1.5之后提供的
java.util.concurrent.Executors:线程池的工厂类,用来生成线程池
Executors类中的静态方法:
    static ExecutorService newFixedThreadPool(int nThreads) 创建一个可重用固定线程数的线程池
    参数:
        int nThreads:创建线程池中包含的线程数量
    返回值:
        ExecutorService接口,返回的是ExecutorService接口的实现类对象,我们可以使用ExecutorService接口接收(面向接口编程)
java.util.concurrent.ExecutorService:线程池接口
    用来从线程池中获取线程,调用start方法,执行线程任务
        submit(Runnable task) 提交一个 Runnable 任务用于执行
    关闭/销毁线程池的方法
        void shutdown()
线程池的使用步骤:
    1.使用线程池的工厂类Executors里边提供的静态方法newFixedThreadPool生产一个指定线程数量的线程池
    2.创建一个类,实现Runnable接口,重写run方法,设置线程任务
    3.调用ExecutorService中的方法submit,传递线程任务(实现类),开启线程,执行run方法
    4.调用ExecutorService中的方法shutdown销毁线程池(不建议执行)

*/
public class Demo01ThreadPool {

public static void main(String[] args) {
    //1.使用线程池的工厂类Executors里边提供的静态方法newFixedThreadPool生产一个指定线程数量的线程池
    ExecutorService es = Executors.newFixedThreadPool(2);
    //3.调用ExecutorService中的方法submit,传递线程任务(实现类),开启线程,执行run方法
    es.submit(new RunnableImpl());//pool-1-thread-1创建了一个新的线程执行
    //线程池会一直开启,使用完了线程,会自动把线程归还给线程池,线程可以继续使用
    es.submit(new RunnableImpl());//pool-1-thread-1创建了一个新的线程执行
    es.submit(new RunnableImpl());//pool-1-thread-2创建了一个新的线程执行

    //4.调用ExecutorService中的方法shutdown销毁线程池(不建议执行)
    es.shutdown();

    es.submit(new RunnableImpl());//抛异常,线程池都没有了,就不能获取线程了
}

}
package com.itheima.demo02.ThreadPool;
/*

2.创建一个类,实现Runnable接口,重写run方法,设置线程任务

*/
public class RunnableImpl implements Runnable{

@Override
public void run() {
    System.out.println(Thread.currentThread().getName()+"创建了一个新的线程执行");
}

}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/75948.html

相关文章

  • Java中的线程

    摘要:中的线程池运用场景非常广泛,几乎所有的一步或者并发执行程序都可以使用。代码中如果执行了方法,线程池会提前创建并启动所有核心线程。线程池最大数量线程池允许创建的线程最大数量。被称为是可重用固定线程数的线程池。 Java中的线程池运用场景非常广泛,几乎所有的一步或者并发执行程序都可以使用。那么线程池有什么好处呢,以及他的实现原理是怎么样的呢? 使用线程池的好处 在开发过程中,合理的使用线程...

    tomato 评论0 收藏0
  • 从0到1玩转线程

    摘要:提交任务当创建了一个线程池之后我们就可以将任务提交到线程池中执行了。提交任务到线程池中相当简单,我们只要把原来传入类构造器的对象传入线程池的方法或者方法就可以了。 我们一般不会选择直接使用线程类Thread进行多线程编程,而是使用更方便的线程池来进行任务的调度和管理。线程池就像共享单车,我们只要在我们有需要的时候去获取就可以了。甚至可以说线程池更棒,我们只需要把任务提交给它,它就会在合...

    darkerXi 评论0 收藏0
  • 线程池原理浅析

    摘要:线程池主要解决两个问题一是当执行大量异步任务时线程池能够提供很好的性能。二是线程池提供了一种资源限制和管理的手段,比如可以限制现成的个数,动态新增线程等。该方法返回一个对象,可指定线程池线程数量。 什么是线程池? 为了避免频繁重复的创建和销毁线程,我们可以让这些线程进行复用,在线程池中,总会有活跃的线程在占用,但是线程池中也会存在没有占用的线程,这些线程处于空闲状态,当有任务的时候会从...

    未东兴 评论0 收藏0
  • Java线程池简单总结

    摘要:本文主要内容为简单总结中线程池的相关信息。方法簇方法簇用于创建固定线程数的线程池。三种常见线程池的对比上文总结了工具类创建常见线程池的方法,现对三种线程池区别进行比较。 概述 线程可认为是操作系统可调度的最小的程序执行序列,一般作为进程的组成部分,同一进程中多个线程可共享该进程的资源(如内存等)。在单核处理器架构下,操作系统一般使用分时的方式实现多线程;在多核处理器架构下,多个线程能够...

    CoorChice 评论0 收藏0
  • Java 线程池的认识和使用

    摘要:用于限定中线程数的最大值。该线程池中的任务队列维护着等待执行的对象。线程池和消息队列笔者在实际工程应用中,使用过多线程和消息队列处理过异步任务。以上是笔者在学习实践之后对于多线程和消息队列的粗浅认识,初学者切莫混淆两者的作用。 多线程编程很难,难点在于多线程代码的执行不是按照我们直觉上的执行顺序。所以多线程编程必须要建立起一个宏观的认识。 线程池是多线程编程中的一个重要概念。为了能够更...

    mgckid 评论0 收藏0

发表评论

0条评论

miya

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<