两个线程交替打印1到100

package com.yixin.yxcode.apus.service.erp.contracte;

import cn.hutool.core.thread.ThreadFactoryBuilder;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.ReentrantLock;

import static java.util.concurrent.Executors.newFixedThreadPool;

/**
 * @author wangdongjiang
 */
public class PrintNum implements Runnable {

    private ReentrantLock lock = new ReentrantLock();
    private Condition condition = lock.newCondition();
    private int num = 1;


    @Override
    public void run() {
        while (num <= 100) {
            try {
                lock.lock();
                condition.signal();
                System.out.println(Thread.currentThread().getName() + ":" + num);
                num++;
                condition.await(5, TimeUnit.SECONDS);
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                lock.unlock();
            }
        }
    }

    public static void main(String[] args) {
        ExecutorService executorService =
                newFixedThreadPool(2, ThreadFactoryBuilder.create().setNamePrefix("线程:").build());
        PrintNum printNum = new PrintNum();
        for (int i = 0; i < 2; i++) {
            executorService.execute(printNum);
        }
        executorService.shutdown();
    }


}

  

Life is so short,do something to make yourself happy, such as coding.
原文地址:https://www.cnblogs.com/dongjiang/p/14516596.html