⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 renderer.java

📁 java concurrency in practice 源码. JAVA并发设计
💻 JAVA
字号:
package net.jcip.examples;import java.util.*;import java.util.concurrent.*;import static net.jcip.examples.LaunderThrowable.launderThrowable;/** * Renderer * <p/> * Using CompletionService to render page elements as they become available * * @author Brian Goetz and Tim Peierls */public abstract class Renderer {    private final ExecutorService executor;    Renderer(ExecutorService executor) {        this.executor = executor;    }    void renderPage(CharSequence source) {        final List<ImageInfo> info = scanForImageInfo(source);        CompletionService<ImageData> completionService =                new ExecutorCompletionService<ImageData>(executor);        for (final ImageInfo imageInfo : info)            completionService.submit(new Callable<ImageData>() {                public ImageData call() {                    return imageInfo.downloadImage();                }            });        renderText(source);        try {            for (int t = 0, n = info.size(); t < n; t++) {                Future<ImageData> f = completionService.take();                ImageData imageData = f.get();                renderImage(imageData);            }        } catch (InterruptedException e) {            Thread.currentThread().interrupt();        } catch (ExecutionException e) {            throw launderThrowable(e.getCause());        }    }    interface ImageData {    }    interface ImageInfo {        ImageData downloadImage();    }    abstract void renderText(CharSequence s);    abstract List<ImageInfo> scanForImageInfo(CharSequence s);    abstract void renderImage(ImageData i);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -