西科java_[西科软件]Java编程中线程池的基本概念和使用

西安Java培训/西科软件报名电话:400-6338-123手机:17602973941

1 引入线程池的原因

由于线程的生命周期中包括创建、就绪、运行、阻塞、销毁阶段,当我们待处理的任务数目较小时,我们可以自己创建几个线程来处理相应的任务,但当有大量的任务时,由于创建、销毁线程需要很大的开销,运用线程池这些问题就大大的缓解了。

2 线程池的使用

我们只需要运用Executors类给我们提供的静态方法,就可以创建相应的线程池:

newSingleThreadExecutor返回以个包含单线程的Executor,将多个任务交给此Exector时,这个线程处理完一个任务后接着处理下一个任务,若该线程出现异常,将会有一个新的线程来替代。

newFixedThreadPool返回一个包含指定数目线程的线程池,如果任务数量多于线程数目,那么没有没有执行的任务必须等待,直到有任务完成为止。

newCachedThreadPool根据用户的任务数创建相应的线程来处理,该线程池不会对线程数目加以限制,完全依赖于JVM能创建线程的数量,可能引起内存不足。

我们只需要将待执行的任务放入run方法中即可,将Runnable接口的实现类交给线程池的execute方法,作为它的一个参数,如下所示:

如果需要给任务传递参数,可以通过创建一个Runnable接口的实现类来完成。

3.实例

(1):newSingleThreadExecutor

MyThread.java

输出结果

(2):newFixedThreadPool

TestFixedThreadPool.Java

输出结果

(3): newCachedThreadPool

TestCachedThreadPool.java

输出结果:

(4):newScheduledThreadPool

TestScheduledThreadPoolExecutor.java

输出结果

西科软件实训中心 西安Java培训 西安Android培训 软件培训

来源:肖琦琦

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月10日
下一篇 2021年1月10日

相关推荐