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

📄 timebudget.java

📁 java concurrency in practice 源码. JAVA并发设计
💻 JAVA
字号:
package net.jcip.examples;import java.util.*;import java.util.concurrent.*;/** * QuoteTask * <p/> * Requesting travel quotes under a time budget * * @author Brian Goetz and Tim Peierls */public class TimeBudget {    private static ExecutorService exec = Executors.newCachedThreadPool();    public List<TravelQuote> getRankedTravelQuotes(TravelInfo travelInfo, Set<TravelCompany> companies,                                                   Comparator<TravelQuote> ranking, long time, TimeUnit unit)            throws InterruptedException {        List<QuoteTask> tasks = new ArrayList<QuoteTask>();        for (TravelCompany company : companies)            tasks.add(new QuoteTask(company, travelInfo));        List<Future<TravelQuote>> futures = exec.invokeAll(tasks, time, unit);        List<TravelQuote> quotes =                new ArrayList<TravelQuote>(tasks.size());        Iterator<QuoteTask> taskIter = tasks.iterator();        for (Future<TravelQuote> f : futures) {            QuoteTask task = taskIter.next();            try {                quotes.add(f.get());            } catch (ExecutionException e) {                quotes.add(task.getFailureQuote(e.getCause()));            } catch (CancellationException e) {                quotes.add(task.getTimeoutQuote(e));            }        }        Collections.sort(quotes, ranking);        return quotes;    }}class QuoteTask implements Callable<TravelQuote> {    private final TravelCompany company;    private final TravelInfo travelInfo;    public QuoteTask(TravelCompany company, TravelInfo travelInfo) {        this.company = company;        this.travelInfo = travelInfo;    }    TravelQuote getFailureQuote(Throwable t) {        return null;    }    TravelQuote getTimeoutQuote(CancellationException e) {        return null;    }    public TravelQuote call() throws Exception {        return company.solicitQuote(travelInfo);    }}interface TravelCompany {    TravelQuote solicitQuote(TravelInfo travelInfo) throws Exception;}interface TravelQuote {}interface TravelInfo {}

⌨️ 快捷键说明

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