• CountDownLatch 部分加载和同时并发业务。


    按顺序部分加载:

    import java.util.concurrent.CountDownLatch;
    
    /**
     * @Title: ThreadCountDownTest.java
     * @Description:
     * @author: wuwenjie
     * @date: 2019.07.17 16:43
     * 
     */
    public class ThreadCountDownTest {
    
        public static void main(String[] args) {
    // 初始化闭锁,并设置资源个数
            CountDownLatch latch = new CountDownLatch(2);
    
            Thread t1 =new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        Thread.sleep(1000);
                //加载1 latch.countDown(); System.out.println(
    111); } catch (InterruptedException e) { e.printStackTrace(); } } });
    Thread t2
    = new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(12000);
                //加载2 latch.countDown(); System.out.println(
    222); } catch (InterruptedException e) { e.printStackTrace(); } } }); Thread t3 = new Thread(new Runnable() { @Override public void run() { try {
                 latch.await();
                 //加载完成业务使用 System.out.println(
    333); } catch (InterruptedException e) { e.printStackTrace(); } } }); t1.start(); t2.start(); t3.start(); } }

    2.同时业务并发处

    import java.util.concurrent.CountDownLatch;
    
    public class ThreadCountDownTest {
    
        public static void main(String[] args) {
    // 初始化闭锁,并设置资源个数
            CountDownLatch latch = new CountDownLatch(2);
    
            Thread t1 =new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        Thread.sleep(1000);
                        latch.countDown();
                //等待所有执行完,并发 latch.await();
    System.out.println(
    111); } catch (InterruptedException e) { e.printStackTrace(); } } }); Thread t2 = new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(12000); latch.countDown(); latch.await(); System.out.println(222); } catch (InterruptedException e) { e.printStackTrace(); } } }); Thread t3 = new Thread(new Runnable() { @Override public void run() { try { latch.await(); System.out.println(333); } catch (InterruptedException e) { e.printStackTrace(); } } }); t1.start(); t2.start(); t3.start(); } }
  • 相关阅读:
    为什么今天的L4无人驾驶无法到达终局(转)
    各种卷积类型Convolution
    关于快速、深入理解需求
    测试注意事项及工作标准
    测试工作指引
    测试验收工作指引
    Jmeter的json提取器使用
    高等数学:第一章 函数与极限
    vscode
    Python模块查找路径
  • 原文地址:https://www.cnblogs.com/jay-wu/p/11244438.html
Copyright © 2020-2023  润新知