美文网首页
Java线程池-Executors

Java线程池-Executors

作者: ssttIsme | 来源:发表于2019-03-24 23:23 被阅读0次

线程池的概念:首先创建一些线程,他们的集合成为线程池,当服务器接收到一个客户请求后,就从线程池中取出一个空闲的线程为之服务,服务完后不关闭该线程,而是将线程还到线程池中。

在线程池的编程模式下,任务是交给整个线程池的,而不是某个线程对象。线程池拿到任务之后(线程池分配线程),它就在内部找有无空闲的线程,再把任务交给内部某个空闲的线程,一个线程某一时刻只能执行一个任务,但是我们可以同时向一个线程池提交多个任务。(大并发量的任务提交过来的时候,线程池的工作原理)

线程池的两个主要作用
1控制线程数量(避免因为创建大量的线程导致的系统崩溃)
2重用线程(避免频繁地创建销毁线程)


线程池
package threadpool;

public class Task implements Runnable{

    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName()+"开始执行。。。");
        
        try {
            Thread.sleep(500);
        } catch (InterruptedException e) {
            System.out.println("执行中断");
        }
        
        System.out.println(Thread.currentThread().getName()+"执行结束。。。");
    }

}

package threadpool;

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

public class Pool {
    public static void main(String[] args) {
        // 创建线程池对象
        ExecutorService service = Executors.newFixedThreadPool(2);

        // 任务请求
        for (int i = 0; i < 6; i++) {
            Task task = new Task();
            // 将任务提交到线程中
            service.execute(task);
        }
        // 顺序关闭
        service.shutdown();
    }
}

运行结果

pool-1-thread-1开始执行。。。
pool-1-thread-2开始执行。。。
pool-1-thread-1执行结束。。。
pool-1-thread-1开始执行。。。
pool-1-thread-2执行结束。。。
pool-1-thread-2开始执行。。。
pool-1-thread-1执行结束。。。
pool-1-thread-2执行结束。。。
pool-1-thread-1开始执行。。。
pool-1-thread-2开始执行。。。
pool-1-thread-1执行结束。。。
pool-1-thread-2执行结束。。。

相关文章

网友评论

      本文标题:Java线程池-Executors

      本文链接:https://www.haomeiwen.com/subject/ivfpvqtx.html