java 多线程 CountDownLatch用法

CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。

主要方法

 public CountDownLatch(int count);

 public void countDown();

 public void await() throws InterruptedException
 

构造方法参数指定了计数的次数

countDown方法,当前线程调用此方法,则计数减一

awaint方法,调用此方法会一直阻塞当前线程,直到计时器的值为0


该方法应用场景

一个视频有很多片(a,b,c)组成,需要将a,b,c,从存储下载到本地,然后将他们合成完整的视频A。在将A上传到存储上。

在下载a,b,c分片视频,可以用多个线程,当所有分片下载完成时,再将它们合成。


Java代码:

List list=new ArrayList();
list.add("a");list.add("b");list.add("c");
final CountDownLatch countDown = new CountDownLatch(sliceURLs.size());
      		for(int i = 0; list.size < 3; i++){
		    	Thread t = new Thread(){
				@Override
				public void run() {
					DownloadManager.downLoad(list.get(i));
					countDown.countDown();
				}
			};
			t.start();
		}
		countDown.await();
		MegerManager.meger(list);

你可能感兴趣的:(java,多线程)