多线程join()方法

直接代码:

public static void main(String[] args) {
		List<Thread> list = new ArrayList();
		for (int k = 0; k < 10; k++) {
			Thread t = new MyThread(k);
			list.add(t);
		}
		for (Thread t : list) {
			t.start();
		}

		int n = 0;
		for (Thread t : list) {
			try {
				t.join();
				n++;
				System.out.println("结束" + n);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}

		System.out.println("完全结束");
	}

	static class MyThread extends Thread {
		int id;

		private MyThread(int id) {
			super();
			this.id = id;
		}

		@Override
		public void run() {
			for (int i = 0; i < 10; i++) {
				System.out.println("k=" + id + ":" + i);
				try {
					Thread.sleep(100);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}
	}

 输出:

...
...
k=4:8
k=7:8
k=8:8
k=5:9
k=2:9
k=6:9
k=1:9
k=9:9
k=0:9
k=3:9
k=4:9
k=7:9
k=8:9
结束1
结束2
结束3
结束4
结束5
结束6
结束7
结束8
结束9
结束10
完全结束

如果把一个线程start()后立即join(),就会变成单线程执行。

猜你喜欢

转载自1181731633.iteye.com/blog/2343995