前段时间看到阿里一个大哥讲述自己阿里面试的经验时,被面试官要求写一个“两个线程交替打印奇偶数”的程序。而前天刚好看见阿里大哥专门讲这个程序的博客《多线程技术: 两个线程交替打印奇数和偶数 - 明志健致远 - 博客园》。
主要是看到安徽建筑大学的字样,回想到那篇文章里大哥的自我介绍,觉得肯定就是那大哥。
看了博客,今天写一篇学习笔记。实现“两个线程交替打印奇偶数”。
本质上,还是利用了隐式锁synchronized锁住对象,然后再利用对象的wait和notify来实现。
为了偷懒,我全篇写了1个外部类,3个静态内部类。
package com.modest.cainiao;
/**
*
* @author heng.guo
* @date 2018-08-15
*/
public class PrintAlternately {
private static class Counter {
public int value = 1;
public boolean odd = true;
}
private static Counter counter = new Counter();
private static class PrintOdd implements Runnable {
@Override
public void run() {
while (counter.value <= 100) {
synchronized(counter) {