专栏名称: 林湾村龙猫
资深后台开发
目录
相关文章推荐
51好读  ›  专栏  ›  林湾村龙猫

深入Java源码理解线程池原理

林湾村龙猫  · 掘金  ·  · 2018-10-08 03:13

正文

阅读 70

深入Java源码理解线程池原理

程序运行,其本质上,是对系统资源(CPU、内存、磁盘、网络等等)的使用。如何高效的使用这些资源是我们编程优化演进的一个方向。今天说的线程池是对CPU的利用的优化手段。

网上有不少介绍如何使用线程池的文章,那我想说点什么呢?我希望查看线程池原理,明白 池化技术 的基本设计思路。遇到其他相似问题可以解决。

池化技术

何为池化技术,简单点来说,就是提前保存大量的资源,以备不时之需。在资源有限的情况下,该技术可以大大提升资源的利用率,提升性能等。

目前比较典型的池化技术有: 线程池、连接池、内存池、对象池等。

本文主要来介绍一下其中比较简单的线程池的实现原理,希望读者们可以举一反三,通过对线程池的理解,学习并掌握所有的编程中池化技术的底层原理,一通百通。

创建一个线程

在java的并发编程中,线程是十分重要的,在Java中,创建一个线程比较简单:

public class App {
    public static void main(String[] args) throws Exception {
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("线程运行中");
            }
        }).start();
    }
}
复制代码

我们通过创建一个线程对象,并且实现Runnable接口就可以实现一个简单的线程。可以利用上多核CPU。当一个任务结束,当前线程就结束。

但很多时候,我们不止会执行一个任务。 如果每次都是如此的创建线程->执行任务->销毁线程,会造成很大的性能开销的。

那能否一个线程创建后,执行完一个任务后,又去执行另一个任务,而不是销毁。这就是线程池。

这就是池化技术的思想,通过预先创建好多个线程,放在池中,这样可以在需要使用线程的时候直接获取,避免多次重复创建、销毁代理的开销。

线程池的简单使用

以下代码,就是在java中创建线程池:

import java.util.concurrent.*;

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






请到「今天看啥」查看全文


推荐文章
中国生物技术网  ·  人源大麻素受体“阴阳双面”均获解析
7 年前
中国好营养  ·  番茄炒蛋,竟然也是增肥食品?
7 年前
海通研究  ·  【策略】荀玉根:稳健者远行
7 年前
中国体育报  ·  国家橄榄球俱乐部成立
7 年前