
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
昆明达内培训的老师知道这是一个计数锁,说白了,就是当你上锁的时候,只有计数减少到0的时候,才会释放锁
packagecn.xf.cp.ch05;publicclassTaskRunableimplementsRunnable { @Overridepublicvoidrun() { System.out.println("do something..."); }publicstaticvoidmain(String []args) { Thread t=newThread(newTaskRunable()); t.start(); } }
packagecn.xf.cp.ch05;importjava.util.concurrent.CountDownLatch;/*** *功能:10个线程同步*时间:下午6:08:46 *文件:ReadData.java *@authorAdministrator **/publicclassReadData {//private static int SEEK_NUM = 0;//同步运行,并统计时间publicstaticlongtimeTasks(intnThreads,finalRunnable task)throwsInterruptedException {//起始门,用来划定线程同步开始的时间finalCountDownLatch startGate =newCountDownLatch(1);//用来等待所有线程结束finalCountDownLatch endGate =newCountDownLatch(nThreads);for(inti = 0; i < nThreads; ++i) {//设置写出文件开始位置,一个long+空格是10个字节//创建线程Thread t =newThread() {publicvoidrun() {try{//等待所有线程启动startGate.await();try{ task.run();//启动线程}finally{//线程运行结束之后上通知endGate.countDown(); } }catch(InterruptedException e) { } } }; t.start(); }longstart =System.nanoTime();//使开始门解锁,task开始工作startGate.countDown();//给end们上锁,只有减少到0才解锁endGate.await();longend =System.nanoTime();returnend - start;//时间结果}publicstaticvoidmain(String[] args) { TaskRunable tr=newTaskRunable();try{ System.out.println(ReadData.timeTasks(10, tr)); }catch(InterruptedException e) {//TODO Auto-generated catch blocke.printStackTrace(); } } }