threaddeadlock.java

来自「java concurrency in practice 源码. JAVA」· Java 代码 · 共 44 行

JAVA
44
字号
package net.jcip.examples;import java.util.concurrent.*;/** * ThreadDeadlock * <p/> * Task that deadlocks in a single-threaded Executor * * @author Brian Goetz and Tim Peierls */public class ThreadDeadlock {    ExecutorService exec = Executors.newSingleThreadExecutor();    public class LoadFileTask implements Callable<String> {        private final String fileName;        public LoadFileTask(String fileName) {            this.fileName = fileName;        }        public String call() throws Exception {            // Here's where we would actually read the file            return "";        }    }    public class RenderPageTask implements Callable<String> {        public String call() throws Exception {            Future<String> header, footer;            header = exec.submit(new LoadFileTask("header.html"));            footer = exec.submit(new LoadFileTask("footer.html"));            String page = renderBody();            // Will deadlock -- task waiting for result of subtask            return header.get() + page + footer.get();        }        private String renderBody() {            // Here's where we would actually render the page            return "";        }    }}

⌨️ 快捷键说明

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