【发布时间】:2017-03-01 12:27:05
【问题描述】:
让我们有以下代码(我们将在单核 CPU 上运行它):
Runnable runnable1 = new Runnable() {
@Override
public void run() {
System.out.println("runnable_1_1");
System.out.println("runnable_1_2");
}
};
Runnable runnable2 = new Runnable() {
@Override
public void run() {
System.out.println("runnable_2_1");
System.out.println("runnable_2_2");
}
};
ExecutorService executorService = Executors.newSingleThreadExecutor(); // or Executors.newCachedThreadExecutor();
executorService.execute(runnable1);
executorService.execute(runnable2);
executorService.shutdown();
理论上是否有可能将一项任务楔入另一项任务,我们会看到如下输出:
runnable_1_1
runnable_2_1
runnable_2_2
runnable_1_2
附言
单线程执行器对于本示例不是必需的。强制要求我们只有一个 CPU 内核
【问题讨论】:
标签: java multithreading swing concurrency java-memory-model