Метод join() служит для того, чтобы остановить поток. На примере понятно:

Без join:

public class MyThread {

	public static void main(String[] args) throws Exception {	
		Runnable runnable = new MyRun("-1-", 300);
		Thread thread = new Thread(runnable);
		thread.start();
		runnable = new MyRun2("--3", 250);
		Thread thread2 = new Thread(runnable);
		thread2.start();
		
		//thread.join();
		//thread2.join();
		
		for (int i = 0; i < 20; i++) {
			System.out.println("--------2------");
			Thread.sleep(200);
		}		
	}
	
}
public class MyRun implements Runnable {
	private String message;
	private int sec;
	MyRun(String message, int sec) {
		this.message = message;
		this.sec = sec;
	}
	@Override
	public void run() {

		for (int i = 0; i < 10; i++) {
			try {
				Thread.sleep(sec);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			System.out.println(message);
		}
		
	}
	
}
public class MyRun2 implements Runnable {
	private String message;
	private int sec;
	MyRun2(String message, int sec) {
		this.message = message;
		this.sec = sec;
	}
	@Override
	public void run() {

		for (int i = 0; i < 20; i++) {
			try {
				Thread.sleep(sec);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			System.out.println(message);
		}
		
	}
}

Вывод на консоль:
———2——
———2——
—3
-1-
———2——
—3
———2——
-1-
—3
———2——
-1-
———2——
—3
———2——
-1-
—3
———2——
-1-
—3
———2——
———2——
—3
-1-
———2——
—3
-1-
———2——
—3
———2——
-1-
—3
———2——
-1-
———2——
—3
———2——
-1-
—3
———2——
—3
———2——
———2——
—3
———2——
—3
—3
—3
—3
—3
—3
Теперь с join:

public class MyThread {

	public static void main(String[] args) throws Exception {	
		Runnable runnable = new MyRun("-1-", 300);
		Thread thread = new Thread(runnable);
		thread.start();
		runnable = new MyRun2("--3", 250);
		Thread thread2 = new Thread(runnable);
		thread2.start();
		
		thread.join();
		thread2.join();
		
		for (int i = 0; i < 20; i++) {
			System.out.println("--------2------");
			Thread.sleep(200);
		}		
	}
	
}	

Т.е. ждем пока не закончится поток thread и thread2. А потом печатаем ———2—— в консоль:
—3
-1-
—3
-1-
—3
-1-
—3
-1-
—3
-1-
—3
—3
-1-
—3
-1-
—3
-1-
—3
-1-
—3
-1-
—3
—3
—3
—3
—3
—3
—3
—3
—3
———2——
———2——
———2——
———2——
———2——
———2——
———2——
———2——
———2——
———2——
———2——
———2——
———2——
———2——
———2——
———2——
———2——
———2——
———2——
———2——

Реклама