南京java培训机构 java同步工具类总结.doc

南京java培训机构 java同步工具类总结.doc

ID:51260821

大小:91.50 KB

页数:10页

时间:2020-03-10

南京java培训机构 java同步工具类总结.doc_第1页
南京java培训机构 java同步工具类总结.doc_第2页
南京java培训机构 java同步工具类总结.doc_第3页
南京java培训机构 java同步工具类总结.doc_第4页
南京java培训机构 java同步工具类总结.doc_第5页
资源描述:

《南京java培训机构 java同步工具类总结.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、南京Java培训机构Java同步丁•具类总结CountDownLatch闭锁:可以延迟线程的进度,直到锁到达终止状态。闭锁的作用相当于一扇门,在锁到达终止状态Z前这扇门一肓是关闭的。当锁到达终止状态时,允许所有线程通过。CountDownLatch有一个初始值,通过调用countDown可以减少该值,一直到0时到达终止状态。FutureTask用于执行一个可返冋结果的长任务,任务在单独的线程屮执行,其他线程可以用get方法取任务结果,如果任务尚未完成,线程在get上阻塞。Semaphore用于控制同时访问某资源,或同时执行某操作

2、的线稈数目。信号量有一个初始值即可以分配的信号量总数H。线稈任务开始前先调用acquire取得信号量,任务结朿后调用release释放信号量。在acquire是如果没有可用信号量,线程将阻塞在acquire上,直到其他线程释放一个信号量。CyclicBarrier栅栏用于多个线程多次迭代时进行同步,在一轮任务屮,任何线稈完成任务后都在barrier上等待,肓到所有其他线稈也完成任务,然后一起释放,同时进入下一轮迭代。CountDownLatch的例了:[java]importjava.util.concurrent.CountD

3、ownLatch;importjava.util.concurrent.atomic.AtomicInteger;publicclassDemoOfLatch{//利用闭锁CountDownLatch控制主线程和了线程的同步publicstaticvoidmain(String[]args){intnumberOfThread=5;finalCountDownLatchstartLatch=newCountDownLatch(1);〃用于控制子线稈开始finalCountDownLatchstopLatch=newCountDo

4、wnLatch(numberOfThread);//用于子线程计数finalAtomiclntegercount=newAtomiclnteger(0);//用于分配了线程唯一标识System.out.println(HMainthreadstart--11);for(inti=0;ivnumberOfThread;i++){Threadthread=newThread(newRunnable()@Overridepublicvoidrun(){inttid=count.getAndlncrement();try{//等代主线稈

5、打开启动信号startLatch.await();System.out.printf("Thread%dstartedtid);intduration=(int)(Math.random()*5000);Thread.sleep(duration);}catch(InterruptedExceptione){e.printStackTrace();Thread.currentThread()。interrupt();}finally{System.out.printf(”Thread%dstoped•••%n11,tid);//

6、线程终止前减少线程计数stopLatch.countDown();});thread.start();}//在放行了线稈z前做点什么别的事情System.out.println(MMainthreaddopreparationworkforchildthreads--11);try{Thread.sleep(2000);}catch(InterruptedExceptione){e.printStackTrace();}//打开闭锁放行所有了线程System.out.println("Mainthreadletchildthre

7、adsgo---11);startLatch.countDown();try{//等待子线程计数降为0即所有子线稈执行完毕System.out.println("Mainthreadwaitforallchildthreads---11);stopLatch.await();}catch(InterruptedExceptione){e.printStackTrace();}System.out.println(HMainthreadexit…”);}FutureTask的例了:[java]importjava.util.con

8、current.Callable;importjava.util.concurrent.ExecutionException;importjava.util.concurrent.FutureTask;publicclassDemoOfFutureTask{pu

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。