Java 多線程控制 CountDownLatch

多線程開發過程中,可能會有一些需求如這樣:需要在一定數量線程啓動後,做一些其他的操作。那麼利用CountDownLatch再方便不過了。不多說上代碼:

package thread;

import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class CountDownLatchTest implements Runnable
{

	private int i;

	private CountDownLatch countDownLatch;

	public CountDownLatchTest(CountDownLatch count, int i)
	{
		this.countDownLatch = count;
		this.i = i;
	}

	public void run()
	{
		int count = 5;
		while (count > 0)
		{
			try
			{
				Thread.sleep(1000);
			} catch (InterruptedException e)
			{
				e.printStackTrace();
			}
			count--;
		}
		this.countDownLatch.countDown();
		System.out.println("I am " + this.i);
	}

	public static void main(String[] args) throws InterruptedException
	{
		CountDownLatch countDownLatch = new CountDownLatch(10);
		ExecutorService threadpool = Executors.newCachedThreadPool();
		for (int i = 0; i < 20; i++)
		{
			CountDownLatchTest test = new CountDownLatchTest(countDownLatch, i);
			threadpool.submit(test);
		}
		countDownLatch.await();
		System.out.println("Now, Let's go! Do others!!!");

		threadpool.shutdown();
	}

}


發佈了62 篇原創文章 · 獲贊 138 · 訪問量 30萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章