thread 使用lambda
List<String> names = new ArrayList<>(); names.add("1mary"); names.add("2jane"); names.add("3tina"); names.forEach(name -> { Runnable r = () -> { int i = 0; try { while (i < 5) { Thread.sleep((int) (Math.random() * 3000)); System.out.println("------" + " stage " + i + "," + name + " is running"); i++; } System.out.println(name + " has finished"); } catch (InterruptedException e) { e.printStackTrace(); } }; Thread thread = new Thread(r); thread.start(); });
如果我想等所有的執行緒跑完, 回到主程式
則要加上thread.join()
List<String> names = new ArrayList<>(); names.add("1mary"); names.add("2jane"); names.add("3tina"); names.forEach(name -> { Runnable r = () -> { int i = 0; try { while (i < 5) { Thread.sleep((int) (Math.random() * 3000)); System.out.println("------" + " stage " + i + "," + name + " is running"); i++; } System.out.println(name + " has finished"); } catch (InterruptedException e) { e.printStackTrace(); } }; Thread thread = new Thread(r); thread.start(); try { thread.join(); } catch (InterruptedException e) { throw new RuntimeException(e); } });
https://www.baeldung.com/java-thread-join
END