您的位置 首页 > 腾讯云社区

操作系统|显示线程和线程池浅析---算法与编程之美

1 什么是线程

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

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

2 显示线程

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

new Thread(){ @Override public void run(){ try { //try里面是需要执行的方法 } catch (Exception e) { } }}.start();

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

3 线程池

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

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

//线程池维护线程的最少数量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 团队

---来自腾讯云社区的---算法与编程之美

关于作者: 瞎采新闻

这里可以显示个人介绍!这里可以显示个人介绍!

热门文章

留言与评论(共有 0 条评论)
   
验证码: