CountDownLatch的用法。

先看下代码

public class Test {
    public static void main(String[] args) {
        System.out.println("开始");

        int totalCount = 72301;

        int pageSize = 1000;

        System.out.println("数量"+totalCount / pageSize);

        for (int i = 1; i <= (totalCount / pageSize)+1; i++) {
               int  finalI = i;
            new Thread(new Runnable() {
                  @Override
                  public void run() {
                      System.out.println("页码"+finalI);
                  }
              }).start();

        }
        System.out.println("结束");
    }



}

控制台结果是

开始
数量72
结束
页码1
页码2
页码3
页码4
页码5
页码7
页码9
页码10
页码12
页码14
页码16
页码18
页码20
页码21
页码23
页码24
页码26
页码27
页码28
页码30
页码31
页码32
页码33
页码34
页码35
页码36
页码37
页码39
页码41
页码42
页码38
页码44
页码46
页码47
页码48
页码49
页码51
页码52
页码53
页码55
页码54
页码56
页码45
页码50
页码57
页码43
页码40
页码29
页码25
页码22
页码19
页码15
页码17
页码8
页码6
页码72
页码11
页码70
页码69
页码13
页码67
页码64
页码61
页码68
页码71
页码73
页码59
页码58
页码60
页码62
页码63
页码66
页码65

如何做到“结束”在最后执行。而不是中间就执行完成了。因为主线程比子线程先执行了。所以结束提前打印了。我们可以用CountDownLatch来让主线程等待子线程执行完后,再执行。

代码如下

public class Test {
    public static void main(String[] args) {
        System.out.println("开始");

        int totalCount = 72301;

        int pageSize = 1000;
        CountDownLatch countDownLatch = new CountDownLatch((totalCount / pageSize)+1);
        System.out.println("数量"+totalCount / pageSize);

        for (int i = 1; i <= (totalCount / pageSize)+1; i++) {
               int  finalI = i;
            new Thread(new Runnable() {
                  @Override
                  public void run() {
                      System.out.println("页码"+finalI);
                      countDownLatch.countDown();
                  }
              }).start();

        }
        try {
            countDownLatch.await();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("结束");
    }



}

控制台结果如下

开始
数量72
页码1
页码2
页码3
页码5
页码7
页码9
页码10
页码11
页码13
页码14
页码15
页码16
页码17
页码20
页码21
页码22
页码23
页码24
页码25
页码27
页码29
页码30
页码31
页码33
页码34
页码36
页码38
页码40
页码42
页码44
页码45
页码47
页码48
页码49
页码50
页码52
页码54
页码55
页码56
页码58
页码59
页码60
页码61
页码64
页码65
页码66
页码67
页码68
页码69
页码70
页码71
页码72
页码73
页码4
页码6
页码8
页码12
页码18
页码19
页码26
页码28
页码32
页码35
页码37
页码39
页码41
页码43
页码46
页码51
页码53
页码57
页码62
页码63
结束

已经达到了需求。

另外想问下 怎么让页码做到顺序执行呢。知道的小伙伴留下言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值