问题分析
今天偶然看到一道死锁分析的题,代码如下:
package com.github.ixanadu13;
import org.junit.jupiter.api.Test;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class ExecutorTest {
private final ExecutorService executor = Executors.newSingleThreadExecutor();
class LocalTFileTask implements Callable<String> {
@Override
public String call() throws Exception {
return "";
}
}
class RenderPageTask implements Callable<String> {
@Override
public String call() throws Exception {
final Future<String> f1 = executor.submit(new LocalTFileTask());
final Future<String> f2 = executor.submit(new LocalTFileTask());
return f1.get() + f2.get();
}
}
public void renderPage() throws Exception{
Future<String> page = executor.submit(new RenderPageTask());
page.get();
}
@Test
public void test() throws Exception {
var test = new ExecutorTest();
test.renderPage();
}
}
2025年8月6日大约 3 分钟