[多线程编程]Java实现交替输出

  记一次面试,笔试题很厚,扫了一眼。其中有道题很经典,也很常用。就是交替输出的问题。

问题描述: 新建三个线程A,B ,C ,每个线程循环10次交替输出 a, b,c。代码实现?

问题分析:这个问题主要是考验面试者对多线程的理解,以及对对象的wait(),notify()方法的了解。

     wait()  方法是指当前线程对 对象 的 控制等待。对对象的控制权移交给其他线程

     notify()方法是指通知某个正在等待当前线程控制权的线程,可以继续进行

代码实现:

public class jiaotishuchu {
    private static Object lock = new Object();

    public static void main(String[] args) {

        Thread a = new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i < 10; i++) {
                    atom.addAndGet(i);
                    synchronized (lock) {
                        try {
                            lock.notify();
                            lock.wait();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        System.out.println("a");
                    }
                }
            }
        });
        Thread b = new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i < 10; i++) {
                    atom.addAndGet(i);
                    synchronized (lock) {
                        try {
                            lock.notify();
                            lock.wait();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        System.out.println("b");
                    }
                }
            }
        });
        a.start();
        b.start();
    }
}

 

posted @ 2016-05-05 18:35  CodeLife  阅读(941)  评论(0编辑  收藏  举报