concurrent包下的一些东西

本文介绍了线程池的概念及其重要性,并详细说明了如何使用Java中的Executors类创建不同类型的线程池,包括固定数量、可变数量、单一线程及延迟执行的线程池。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、线程池的创建

为什么要用线程池?

线程池是因为线程的生成关闭很浪费资源 所以不要频繁的操作 线程次 就是管理线程的地方 不用了它可以让它休眠也就是他替你管理线程 而且比你管理的要好的多。线程池为线程生命周期开销问题和资源不足问题提供了解决方案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。其 好处是,因为在请求到达时线程已经存在,所以无意中也消除了线程创建所带来的延迟。这样,就可以立即为请求服务,使应用程序响应更快。而且,通过适当地调 整线程池中的线程数目,也就是当请求的数目超过某个阈值时,就强制其它任何新到的请求一直等待,直到获得一个线程来处理为止,从而可以防止资源不足。

1.创建固定线程数量的线程池

Executors.newFixedThreadPool(线程池中的线程个数);

2.创建线程数可变的线程池

Executors.newCachedThreadPool();

3.创建单一线程的线程池

Executors.newSingleThreadExecutor();

4.创建延迟连接的线程池

ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadExecutor();

scheduledExecutorService .scheduled(new Runnable(){

syso("延迟一段时间执行");

},10,TimeUnit.Second);

scheduledExecutorService .scheduledAtFixDelay(new Runnable(){

syso("延迟10s时间执行,之后每隔2s的频率继续执行");

},10,2,TimeUnit.Second);

ScheduledExecutorService 类并没有提供在某一时间做某件事的方法 但可以这样写

scheduledExecutorService .scheduled(new Runnable(){

syso("延迟一段时间执行");

},事件发生的时间.getDate()-System.currentTimeMillis(),TimeUnit.MilliSeconds);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值