java-ExecutorService实现线程池


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

/**
 * 使用ExecutorService实现线程池
 * ExecutorService是java提供的用于管理线程池的接口
 * 线程池的作用:控制线程数量,重用线程
 * 
 * 线程池的概念:首先创建一些线程,他们的集合称为线程池,当服务器接受到一个客户请求后
 * 就从线程池中取出一个空闲的线程为之服务,服务完后不关闭该线程。而是将该线程还回到线程池中
 * 在线程池的编程模式下,任务是提交给整个线程池,而不是交给某个线程,线程池在拿到任务后,他就在内部
 * 找有无空闲线程,再把任务交给内部某个空闲线程。
 * 一个线程同时只能执行一个任务,但是可以同一向一个线程池交多个任务
 * 
 * 
 *
 */
public class ExecutorServiceDemo {
    public static void main(String[] args) {
        /**
         * Executors.newFixedThreadPool(int nThreads)
         * 创建一个可重用固定线程集合的线程池,以共享的无界队列方式来运行这些线程
         */
        ExecutorService threadPool=Executors.newFixedThreadPool(2);//新建线程池并初始化2个空线程
        for(int i=0;i<5;i++) {//新建5个线程任务
            Runnable r=new Runnable(){
                public void run() {
                    Thread t=Thread.currentThread();
                    try {
                        System.out.println(t.getName()+":"+"正在运行任务..");
                        Thread.sleep(3000);
                        System.out.println(t.getName()+":"+"任务结束!");
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        System.out.println(t.getName()+":"+"线程中断了");
                    }

                }
            };
            //将任务指派给线程池
            threadPool.execute(r);
            System.out.println("指派了一个任务给线程池!");
        }
//      threadPool.shutdown();
        threadPool.shutdownNow();
        System.out.println("线程池结束了");

        /**
         * BlockingQueue是双缓冲队列
         * 在多线程并发时,若需要使用队列,我们可以使用Queue,但是要解决一个问题就是同步,但同步操作会降低并发对Queue操作的效率
         * BlockingQueue内部使用两条队列,可允许两个线程同时向队列一个做存储,一个做取出操作,在保证并发安全的同时提高了队列的存取效率
         */

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰河家园

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值