java语言并发编程之线程池代码实例
小标 2018-08-06 来源 : 阅读 1599 评论 0

摘要:本文主要向大家介绍了java语言并发编程之线程池代码实例,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

本文主要向大家介绍了java语言并发编程之线程池代码实例,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

package com.dason.juc2;

 

import java.util.ArrayList;

import java.util.List;

import java.util.concurrent.Callable;

import java.util.concurrent.ExecutorService;

import java.util.concurrent.Executors;

import java.util.concurrent.Future;

 

/*

 * 一、线程池:提供了一个线程队列,队列中保存着所有等待状态的线程。避免了创建与销毁额外开销,提高了响应的速度。

 *

 * 二、线程池的体系结构:

 *  java.util.concurrent.Executor : 负责线程的使用与调度的根接口

 *      |--**ExecutorService 子接口: 线程池的主要接口

 *          |--ThreadPoolExecutor 线程池的实现类

 *          |--ScheduledExecutorService 子接口:负责线程的调度

 *              |--ScheduledThreadPoolExecutor :继承 ThreadPoolExecutor, 实现 ScheduledExecutorService

 *

 * 三、工具类 : Executors

 * ExecutorService newFixedThreadPool() : 创建固定大小的线程池

 * ExecutorService newCachedThreadPool() : 缓存线程池,线程池的数量不固定,可以根据需求自动的更改数量。

 * ExecutorService newSingleThreadExecutor() : 创建单个线程池。线程池中只有一个线程

 *

 * ScheduledExecutorService newScheduledThreadPool() : 创建固定大小的线程,可以延迟或定时的执行任务。

 */

public class TestThreadPool {

     

    public static void main(String[] args) throws Exception {

//      //1. 创建线程池

        ExecutorService pool = Executors.newFixedThreadPool(5);

//      ThreadPoolDemo tpd = new ThreadPoolDemo();

//     

//      //2. 为线程池中的线程分配任务

//      for (int i = 0; i < 10; i++) {

//          pool.submit(tpd);

//      }

//     

//      //3. 关闭线程池

//      pool.shutdown();

         

        List<future<integer>> list = new ArrayList<>();

         

        for (int i = 0; i < 10; i++) {

            Future<integer> future = pool.submit(new Callable<integer>(){

 

                @Override

                public Integer call() throws Exception {

                    int sum = 0;

                     

                    for (int i = 0; i <= 100; i++) {

                        sum += i;

                    }

                     

                    return sum;

                }

                 

            });

 

            list.add(future);

        }

         

        pool.shutdown();

         

        for (Future<integer> future : list) {

            System.out.println(future.get());

        }

         

    }

     

 

}

 

class ThreadPoolDemo implements Runnable{

 

    private int i = 0;

     

    @Override

    public void run() {

        while(i <= 100){

            System.out.println(Thread.currentThread().getName() + " : " + i++);

        }

    }

     

}</integer></integer></integer></future<integer>

package com.dason.juc2;

 

import java.util.Random;

import java.util.concurrent.Callable;

import java.util.concurrent.Executors;

import java.util.concurrent.Future;

import java.util.concurrent.ScheduledExecutorService;

import java.util.concurrent.TimeUnit;

 

/*

 * 一、线程池:提供了一个线程队列,队列中保存着所有等待状态的线程。避免了创建与销毁额外开销,提高了响应的速度。

 *

 * 二、线程池的体系结构:

 *  java.util.concurrent.Executor : 负责线程的使用与调度的根接口

 *      |--**ExecutorService 子接口: 线程池的主要接口

 *          |--ThreadPoolExecutor 线程池的实现类

 *          |--ScheduledExecutorService 子接口:负责线程的调度

 *              |--ScheduledThreadPoolExecutor :继承 ThreadPoolExecutor, 实现 ScheduledExecutorService

 *

 * 三、工具类 : Executors

 * ExecutorService newFixedThreadPool() : 创建固定大小的线程池

 * ExecutorService newCachedThreadPool() : 缓存线程池,线程池的数量不固定,可以根据需求自动的更改数量。

 * ExecutorService newSingleThreadExecutor() : 创建单个线程池。线程池中只有一个线程

 *

 * ScheduledExecutorService newScheduledThreadPool() : 创建固定大小的线程,可以延迟或定时的执行任务。

 */

public class TestScheduledThreadPool {

 

    public static void main(String[] args) throws Exception {

        ScheduledExecutorService pool = Executors.newScheduledThreadPool(5);

         

        for (int i = 0; i < 5; i++) {

            Future<integer> result = pool.schedule(new Callable<integer>(){

 

                @Override

                public Integer call() throws Exception {

                    int num = new Random().nextInt(100);//生成随机数

                    System.out.println(Thread.currentThread().getName() + " : " + num);

                    return num;

                }

                 

            }, 1, TimeUnit.SECONDS);

             

            System.out.println(result.get());

        }

         

        pool.shutdown();

    }

     

}

</integer></integer>

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!


本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved