博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 1.5并发包之二:任务与线程池
阅读量:4179 次
发布时间:2019-05-26

本文共 1153 字,大约阅读时间需要 3 分钟。

从Java 1.5开始,并发的最大特点是将线程的创建和管理与具体任务的执行分离,线程的创建和管理单独交给了专门线程池。

1. 具体要执行的任务

任务对象往往是在一个线程中创建,然后交给另一个线程执行。

java.lang.Runnable接口
传统接口,不能返回值,也不能抛出checked的异常(即只能抛出RuntimeException及其子类的异常)
java.util.concurrent.Callable<V>接口
可以返回值V,也可以抛出checked的异常Exception

2. 线程池,将线程的创建与管理独立出来,开发人员在Java应用中直接使用。

1)常用线程池

java.util.concurrent.Executor接口,执行提交了的Runnable任务
void execute(Runnable command);//接口中的唯一方法
无需直接创建线程对象并启动执行任务(创建任务,并提交执行)
将任务的提交与任务的执行分离
只要通过Executor接口的execute(new RunnableTask...())方法即可执行任务
java.util.concurrent.ExecutorService接口,扩展了Executor接口,可以终止任务的执行
void shutdown();//不再接受新任务,等待已有任务执行完毕后终止
List<Runnable> shutdownNow();//立刻终止所有任务的执行
Future<?> submit(Runnable task);//扩展了Executor接口的execute()方法,提交任务
java.util.concurrent.ScheduledExecutorService接口,扩展了ExecutorService接口,可以定时或周期性执行任务

2)定制线程池

java.util.concurrent.ThreadPoolExecutor类,扩展自java.util.concurrent.AbstractExecutorService抽象类

扩展该类,可以定制Executor新特性
3)java.util.concurrent.Executors工具类
以静态工厂方法的形式,创建各种Executor接口实例。
static ExecutorService newFixedThreadPool(int nThreads);//固定大小的线程池
static ExecutorService
newCachedThreadPool();//可扩展大小的线程池,适合短小任务

static ExecutorServicenewSingleThreadExecutor();//同时只能执行一个任务

转载地址:http://knlai.baihongyu.com/

你可能感兴趣的文章
Java自学第一阶段(四)-万能的变量(2)
查看>>
HashMap存储原理以及与hashcode、equals方法的关系
查看>>
python3.6在windows下安装scrapy遇到的问题总结
查看>>
pycharm中打开scrapy项目,import scrapy报错问题
查看>>
scrapy爬取图片,自定义图片下载路径和图片名称
查看>>
python3下import MySQLdb出错问题
查看>>
Maven搭建SSM框架(eclipse)
查看>>
synchronized+Integer模拟火车票预售,出现的问题总结
查看>>
沉浸式过山车:穿梭时空,自在畅游巨蚁数字虚实世界
查看>>
沉浸式过山车,感受巨蚁数字心灵的激情
查看>>
沉浸式过山车,巨蚁数字带给您前所未有的科技体验
查看>>
质量好的自行车品牌有哪些辐轮王土拨鼠全球顶级自行车品牌排行榜
查看>>
htmlunit爬取js异步加载后的页面
查看>>
修改Linux系统locale设置
查看>>
linux网络无法连接问题
查看>>
linux 查看ip
查看>>
记录go数据库操作的bug——max_prepared_stmt_count,附分析过程
查看>>
go中map与xml互转
查看>>
java进程占用CPU过高
查看>>
CSDN-markdown编辑器
查看>>