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

