[多线程编程]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(); } }
转载请注明来源