Java进阶之线程池SingleThreadExecutor :用法实例(一百二十)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者

博主新书推荐:《Android系统多媒体进阶实战》🚀
Android Audio工程师专栏: Audio工程师进阶系列原创干货持续更新中……】🚀
Android多媒体专栏: 多媒体系统工程师系列原创干货持续更新中……】🚀
推荐1:车载系统实战课:AAOS车载系统+AOSP14系统攻城狮入门视频实战课 🚀
推荐2:HIDL与AIDL实战课:Android14 Binder之HIDL与AIDL通信实战课 🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

欢迎关注Android系统攻城狮

🌻1. 前言

本篇目的:Java进阶之线程池SingleThreadExecutor:用法实例

🌻2. Java线程池SingleThreadExecutor介绍

  1. 基本概念

    • SingleThreadExecutor是Java并发包(java.util.concurrent)中的一个线程池实现,提供单线程的线程池。
    • SingleThreadExecutor通过Executors.newSingleThreadExecutor方法创建,确保所有任务都在同一个线程中顺序执行。
  2. 功能

    • 提供单线程的线程池,确保任务按提交顺序执行。
    • 支持任务的提交和执行,确保线程安全。
  3. 使用限制

    • SingleThreadExecutor的线程数量固定为1,适用于需要顺序执行任务的场景。
    • 适用于任务数量较多但需要顺序执行的场景。
  4. 性能特性

    • SingleThreadExecutor通过单线程顺序执行任务,减少线程切换的开销。
    • 合理使用SingleThreadExecutor可以提高程序的性能和响应性。
  5. 使用场景

    • 广泛应用于需要顺序执行任务的场景。
    • 特别适用于任务数量较多但需要顺序执行的场景。

🌻3. 代码实例

🌻3.1 使用SingleThreadExecutor执行任务
  1. 应用场景

    • 使用SingleThreadExecutor执行多个任务,确保任务按提交顺序执行。
  2. 用法实例

    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    
    public class SingleThreadExecutorExample {
        public static void main(String[] args) {
            ExecutorService executor = Executors.newSingleThreadExecutor();
    
            for (int i = 0; i < 5; i++) {
                int taskNumber = i;
                executor.submit(() -> {
                    System.out.println("Task " + taskNumber + " is running on thread " + Thread.currentThread().getName());
                });
            }
    
            executor.shutdown();
        }
    }
    

    输出:
    Task 0 is running on thread pool-1-thread-1
    Task 1 is running on thread pool-1-thread-1
    Task 2 is running on thread pool-1-thread-1
    Task 3 is running on thread pool-1-thread-1
    Task 4 is running on thread pool-1-thread-1

🌻3.2 使用SingleThreadExecutor处理异常
  1. 应用场景

    • 使用SingleThreadExecutor处理任务中的异常。
  2. 用法实例

    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    
    public class SingleThreadExecutorExceptionHandlingExample {
        public static void main(String[] args) {
            ExecutorService executor = Executors.newSingleThreadExecutor();
    
            for (int i = 0; i < 5; i++) {
                int taskNumber = i;
                executor.submit(() -> {
                    try {
                        if (taskNumber == 2) {
                            throw new RuntimeException("Task " + taskNumber + " failed");
                        }
                        System.out.println("Task " + taskNumber + " is running on thread " + Thread.currentThread().getName());
                    } catch (RuntimeException e) {
                        System.out.println("Exception in task " + taskNumber + ": " + e.getMessage());
                    }
                });
            }
    
            executor.shutdown();
        }
    }
    

    输出:
    Task 0 is running on thread pool-1-thread-1
    Task 1 is running on thread pool-1-thread-1
    Exception in task 2: Task 2 failed
    Task 3 is running on thread pool-1-thread-1
    Task 4 is running on thread pool-1-thread-1

🌻3.3 使用SingleThreadExecutor执行带返回值的任务
  1. 应用场景

    • 使用SingleThreadExecutor执行带返回值的任务。
  2. 用法实例

    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.Future;
    
    public class SingleThreadExecutorCallableExample {
        public static void main(String[] args) throws Exception {
            ExecutorService executor = Executors.newSingleThreadExecutor();
    
            Future<String> future1 = executor.submit(() -> "Result from task 1");
            Future<String> future2 = executor.submit(() -> "Result from task 2");
    
            System.out.println("Result 1: " + future1.get());
            System.out.println("Result 2: " + future2.get());
    
            executor.shutdown();
        }
    }
    

    输出:
    Result 1: Result from task 1
    Result 2: Result from task 2

🌻3.4 线程池SingleThreadExecutor总结

关键词功能描述典型应用
SingleThreadExecutor单线程的线程池提供单线程的线程池,确保任务按提交顺序执行
Executors.newSingleThreadExecutor创建单线程的线程池适用于任务数量较多但需要顺序执行的场景
submit提交任务到线程池提交任务并返回Future对象,用于获取任务结果
shutdown关闭线程池停止接受新任务,等待现有任务完成
性能特性单线程顺序执行任务适用于任务数量较多但需要顺序执行的场景
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Android系统攻城狮

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值