1、这个一般面试编码可能会遇到,我这里通过实现Runnable接口、运用同步代码块和Object下提供关于线程的wait()、和notify方法。
2、当然你也可以通过继承Thread类和线程池实现(只开2个线程有点浪费),同时借助ReentrantLock锁(可重入锁)实现。
3、具体实现如下:
/**
* 线程交替打印奇数和偶数1-100
* 提供一种实现,其他实现可继承thread类、
* 或者基于java.util.concurrent.ThreadPoolExecutor实现(这个有点浪费,只开两个线程)
* @author xpzhang
*
*/
public class OddAndEvenNumber implements Runnable {
static Object object=OddAndEvenNumber.class;
static int i=0;
@Override
public void run() {
while(i<=100) {
synchronized (object) {
object.notifyAll();
System.out.println(Thread.currentThread().getId()+"****"+i);
i++;
try {
object.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
new Thread(new OddAndEvenNumber()).start();
new Thread(new OddAndEvenNumber()).start();
}
}