先看《阿里Java开发手册》线程池创建的规则:

一、编程规约

(六)并发处理

 阿里的P3C开发规范插件会给出警告:

    private static ExecutorService executor = Executors.newFixedThreadPool(4);

 Java多线程异步音频播放器

实现Java音频播放器时,支持多线程异步播放,创建线程池时遵守《阿里Java开发手册》规约。

代码下载:https://github.com/rickding/HelloJava/tree/master/HelloAudio

class Player implements Runnable {
    private static ScheduledExecutorService executorService = new ScheduledThreadPoolExecutor(
            4,
            new BasicThreadFactory.Builder().namingPattern("audio-player-pool-%d").daemon(true).build()
    );

    public static void asyncPlay(URL fileUrl) {
        if (fileUrl == null) {
            return;
        }

        // 播放进程
        Player player = new Player();
        try {
            player.audioStream = AudioSystem.getAudioInputStream(fileUrl);
        } catch (UnsupportedAudioFileException e) {
            System.err.println(e.getMessage());
        } catch (IOException e) {
            System.err.println(e.getMessage());
        }
        executorService.execute(player);
    }
}