业务描述
前段时间遇到一个题目,关于两个线程分别打印0-100的之间的奇偶数,当时自己的写法是通过synchronized同步锁结合wait 和notify 的方式进行编写。主要逻辑的代码如下所示:
package com.xyq.maventest.alibaba;
import java.util.concurrent.CountDownLatch;
/****
* 两个线程分别打印0-100之间的奇偶数
* @author youqiang.xiong
* <p> TODO 简单描述此类的用途</p>
* 2018年2月25日下午6:18:34
*/
public class ThreadPrintData {
public static CountDownLatch latch = new CountDownLatch(2);
private static Object lock = new Object();
private static volatile Integer i = 0;
private static final int TOTAL = 100;
public static void main(String[] args) {
Thread thread1 = new Thread() {
@Override
public void run() {
while (i <= TOTAL) {
synchronized (lock) {
if (i % 2 == 1) {
System.out.println(Thread.currentThread().getName() + "打印: " + i++);
} else {
lock.notifyAll();
try {
if(i <= TOTAL){
lock.wait();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
};
thread1.setName(