一个很棒的 线程池+缓存 示例

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个自定义的可缓存线程池的Java代码示例: ``` import java.util.concurrent.*; public class CustomThreadPool { private ThreadPoolExecutor executor; public CustomThreadPool() { int corePoolSize = 0; int maximumPoolSize = 10; long keepAliveTime = 60L; TimeUnit unit = TimeUnit.SECONDS; BlockingQueue<Runnable> workQueue = new SynchronousQueue<>(); executor = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue); } public void execute(Runnable task) { executor.execute(task); } public void shutdown() { executor.shutdown(); } } ``` 在这个例子中,我们使用了Java内置的ThreadPoolExecutor来创建线程池。这个线程池的特点是: - 初始线程数为0,最大线程数为10,空闲线程超过60秒就被回收 - 使用SynchronousQueue作为任务队列,这个队列没有容量限制,每个插入操作都必须等待一个相应的删除操作,因此任务立即被提交到线程池中执行 我们还定义了两个方法,execute和shutdown。execute方法接受一个Runnable任务并将其提交给线程池执行,shutdown方法关闭线程池。使用这个线程池示例代码如下: ``` public static void main(String[] args) { CustomThreadPool threadPool = new CustomThreadPool(); for (int i = 0; i < 20; i++) { final int taskNum = i; threadPool.execute(() -> { System.out.println("Task " + taskNum + " is running."); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("Task " + taskNum + " is completed."); }); } threadPool.shutdown(); } ``` 这个示例代码创建了一个CustomThreadPool对象,然后提交了20个任务给线程池执行。每个任务都打印出自己的编号,然后等待1秒钟,最后打印出自己完成。注意,在最后一行代码中,我们调用了shutdown方法来关闭线程池,确保程序能够正常退出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值