Java 使用join让线程按顺序打印的正确方法是什么
我很好奇如何使用Java 使用join让线程按顺序打印的正确方法是什么,java,multithreading,join,Java,Multithreading,Join,我很好奇如何使用join()(也欢迎任何其他方式)让线程按顺序打印出来。例如,我有如下代码: private static class LittleThread implements Runnable { int val; public LittleThread(int i) { val = i; } public void run() { System.out.println("Thread " + val + " finishe
join()
(也欢迎任何其他方式)让线程按顺序打印出来。例如,我有如下代码:
private static class LittleThread implements Runnable {
int val;
public LittleThread(int i) {
val = i;
}
public void run() {
System.out.println("Thread " + val + " finished.");
}
}
public static void main(String[] args) throws Exception {
for (int i = 1; i <= 10; i++) {
new Thread(new LittleThread(i)).start();
}
}
私有静态类LittleThread实现可运行{
int-val;
公共小线程(inti){
val=i;
}
公开募捐{
System.out.println(“线程”+val+“完成”);
}
}
公共静态void main(字符串[]args)引发异常{
对于(int i=1;i要使多个可运行的对象在单独的线程中执行,请按顺序执行,应使用单个线程:
publicstaticvoidmain(字符串[]args)引发异常{
ExecutorService executor=Executors.newSingleThreadExecutor();
对于(int i=0;i<10;i++){
执行人提交(新LittleThread(i));
}
executor.shutdown();
}
ExecutorService
负责正确管理线程
对象(本例中为所有对象)…根据需要创建它们(it),并通过调用join
终止它们(服务关闭)。“按顺序运行线程”-这有点忽略了重点。你如何用锤子拧入螺钉?你没有。(为什么你想按顺序运行线程?为什么每个人都想做的第一件事就是让线程完全无用?)@DavidSchwartz我同意。但这是一个面试问题。我想面试官只是想确保应聘者知道多线程是如何工作的,以及你是否知道如何使用一些线程函数使上面显示的代码工作。更多的是测试多线程概念。然后我对面试问题给出了正确的答案--你不这样做是因为这毫无意义。大多数面试问题都是寻找你是如何对一个问题进行推理的。当被问及如何做你永远不会做的事情时,你应该说你永远不会做,并解释原因!如果面试问题是“你如何使用手提钻将恶魔从某人的头脑中赶走?”,答案不是关于如何握住手提钻!对此代码最简单的更改是使用run()
而不是start()
。
public static void main(String[] args) throws Exception {
ExecutorService executor = Executors.newSingleThreadExecutor();
for (int i = 0; i < 10; i++) {
executor.submit(new LittleThread(i));
}
executor.shutdown();
}