实现线程按顺序输出ABC

线程按顺序输出ABC

实现描述:建立三个线程A、B、C,分别按照顺序输出十次ABC

首先建立一个方法,按照条件进行输出

class PrintABC{
	private int index=0;

	public synchronized void print(int n) {
		// TODO Auto-generated method stub
		try {
			while(index!=n) {
				wait();
			}
			if(index==0) {
				System.out.print("A");
			}else if(index==1) {
				System.out.print("B");
			}else if(index==2) {
				System.out.print("C");
			}
			index = (n+1)%3;
			notifyAll();
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
}

其后在建立三个线程,分别调用输出方法

public class AllThread {

	private PrintABC printABC;
	public AllThread(PrintABC printABC) {
		this.printABC=printABC;
	}
	
class ThreadA extends Thread{
		@Override
		public void run() {
			for(int i=0;i<10;i++) {
				printABC.print(0);
		}
	}
}

class ThreadB extends Thread{
		@Override
		public void run() {
			for(int i=0;i<10;i++) {
				printABC.print(1);
		}
	}
}
	
class ThreadC extends Thread{
		@Override
		public void run() {
			for(int i=0;i<10;i++) {
				printABC.print(2);
		}
	}
}
	
public static void main(String[] args) {
		AllThread allThread = new AllThread(new PrintABC());
		allThread.new ThreadA().start();
		allThread.new ThreadB().start();
		allThread.new ThreadC().start();
	}
}

结果展示
控制台输出

你可能感兴趣的:(算法)