前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >操作系统|显示线程和线程池浅析

操作系统|显示线程和线程池浅析

作者头像
算法与编程之美
修改2020-05-18 17:46:06
5370
修改2020-05-18 17:46:06
举报
文章被收录于专栏:算法与编程之美

1 什么是线程

理解线程前先来看一下进程:其就是一个应用程序,当其启动运行时,操作系统就会为其分配一定的内存空间使其正常运行。

而线程则就是寄生在进程上,是“轻量级”的进程,一个进程可以有很多线程,每个线程执行各自不同的任务。

2 显示线程

先来看看如何直接手写一个显示线程:

代码语言:javascript
复制

new  Thread(){

    @Override

    public void run(){

        try {

            //try里面是需要执行的方法

        } catch (Exception e) {

        }

    }

}.start();

这样就创建了一个可以使用的显示线程,值得注意的是不要忘记了@Override的注解。

3 线程池

首先可以知道,创建销毁线程会消耗使用内存,所以可以创建一个线程池供以使用,其好处是减少在创建和销毁线程上所花的时间以及系统资源的开销,解决资源不足的问题,如果不使用线程池,有可能造成系统创建大量同类线程而导致消耗完内存或者"过度切换"的问题。

下面就是自己创建一个线程池对其参数的要求限制:

代码语言:javascript
复制

//线程池维护线程的最少数量

private  int corePoolSize = 2;

//线程池维护线程的最大数量

private  int maximumPoolSize = 10;

//线程池维护线程所允许的空闲时间

private  long keepAliveTime = 3;

//线程池维护线程所允许的空闲时间的单位

private  TimeUnit unit = TimeUnit.SECONDS;

//线程池所使用的缓冲队列

private  BlockingQueue<Runnable> workQueue;

//线程池对拒绝任务的处理策略

private  RejectedExecutionHandler handler;

下面还有关于四种线程池的特点简介:

一:newCachedThreadPool,创建一个缓存线程池,当线程数过大,可回收多余线

程,如线程数不足,创建新线程。

二:newFixedThreadPool,创建一个固定数量大小的线程池,当线程任务数超过固定大小时,未执行的线程任务进行阻塞队列,等待线程池调度。

三:newSingleThreadExecutor,创建一个单例线程池, 只存在一个线程运行, 多的线程任务进行阻塞状态,线程任务按顺序执行。

四:newScheduledThreadPool,创建一个定时调度线程池,内置一个延迟队列,可按照设定的固定时间周期性的执行任务。

本文仅是对线程部分内容进行浅述,其内容仍需进一步学习,如有疑问错误,望指正。

END

主 编 | 张祯悦

责 编 | 黄晓锋

where2go 团队


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档