中级java工程师_中级JAVA开发工程师

线程的5种状态:新建(New),就绪(Runnable),运行(Running),阻塞(Blocked),死亡(Dead)

创建方式:继承Thread 实现Runnable 实现Callable 使用Executors问题来了:1. sleep结束后进入什么状态?

就绪状态

2. Runnable和Callable的区别? > Runnable执行方法是run(),Callable是call()

> 实现Runnable接口的任务线程无返回值;实现Callable接口的任务线程能返回执行结果

> call方法可以抛出异常,run方法若有异常只能在内部消化

3. FutureTask是什么

FutureTask futureTask = new FutureTask<>(实现了Callable的类实例);//将任务放进FutureTask里

Thread thread = new Thread(futureTask);

thread.start();

或:

ExecutorService executorService=Executors.newCachedThreadPool();

executorService.submit(futureTask);

executorService.shutdown();

一个FutureTask可以用来包装一个Callable或Runnable对象。因为FutureTask实现了Runnable接口,一个FutureTask可以被提交给一个Executor来执行。

4. Executors创建的几种线程池? ThreadPoolExecutor的参数?

>newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。

> newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。

> newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。

> newSingleThreadExecutor 创建一个单线程化的线程池执行任务。

public ThreadPoolExecutor (int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit,BlockingQueue workQueue)

> corePoolSize:线程池中所保存的核心线程数,包括空闲线程。

> maximumPoolSize:池中允许的最大线程数。

> keepAliveTime:线程池中的空闲线程所能持续的最长时间。

> unit:持续时间的单位。

> workQueue:任务执行前保存任务的队列,仅保存由execute方法提交的Runnable任务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值