CountDownLatch简单用法
Posted huangtao1927
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CountDownLatch简单用法相关的知识,希望对你有一定的参考价值。
public abstract class ControllerCenter implements Runnable private CountDownLatch countDown; private String controllerCenterName; private boolean result; public ControllerCenter(CountDownLatch countDown, String controllerCenterName) this.countDown = countDown; this.controllerCenterName = controllerCenterName; this.result = false; @Override public void run() try check(); result = true; catch (Exception e) e.printStackTrace(); result = false; finally if (countDown != null) countDown.countDown(); /** * 子类重写 * @return */ protected abstract void check(); public CountDownLatch getCountDown() return countDown; public void setCountDown(CountDownLatch countDown) this.countDown = countDown; public String getControllerCenterName() return controllerCenterName; public void setControllerCenterName(String controllerCenterName) this.controllerCenterName = controllerCenterName; public boolean isResult() return result; public void setResult(boolean result) this.result = result;
public class AControllerCenter extends ControllerCenter public AControllerCenter(CountDownLatch countDown) super(countDown, "AControllerCenter"); @Override protected void check() System.out.println("is check [" + "A" + "] now"); try Thread.sleep(2000); catch (Exception e) e.printStackTrace(); System.out.println("is check [" + "A" + "] success");
public class BControllerCenter extends ControllerCenter public BControllerCenter(CountDownLatch countDown) super(countDown, "BControllerCenter"); @Override protected void check() System.out.println("is check [" + "B" + "] now"); try Thread.sleep(5000); catch (Exception e) e.printStackTrace(); System.out.println("is check [" + "B" + "] success");
public class CheckSuccessTest private static List<ControllerCenter> controllerCenterList; private static CountDownLatch countDown; public CheckSuccessTest() public static boolean checkAll() throws Exception countDown = new CountDownLatch(2); controllerCenterList = new ArrayList<>(); controllerCenterList.add(new AControllerCenter(countDown)); controllerCenterList.add(new BControllerCenter(countDown)); Executor pool = Executors.newFixedThreadPool(2); for (ControllerCenter key : controllerCenterList) pool.execute(key); countDown.await(); for (ControllerCenter key : controllerCenterList) if (!key.isResult()) return false; return true; public static void main(String[] args) throws Exception System.out.println("All Controller result is = [" + CheckSuccessTest.checkAll() + "]");
以上是关于CountDownLatch简单用法的主要内容,如果未能解决你的问题,请参考以下文章