多线程按顺序依次打印ABCD---java多线程的一道经典面试题

来源:互联网 发布:mac查看隐藏文件 编辑:程序博客网 时间:2024/05/01 09:09

这是java多线程的一道经典面试题,要求使用4个线程依次打印ABCDABCDABCD...

package web1;import java.util.concurrent.atomic.AtomicInteger;public class Main1 {    public static void main(String[] args) {        AtomicInteger count = new AtomicInteger(0);        int runCount = 4;        ThreadTest3 t1 = new ThreadTest3(count, "A",0,runCount);        ThreadTest3 t2 = new ThreadTest3(count, "B",1,runCount);        ThreadTest3 t3 = new ThreadTest3(count, "C",2,runCount);        ThreadTest3 t4 = new ThreadTest3(count, "D",3,runCount);        t1.start();        t2.start();        t3.start();        t4.start();    }}

线程类代码:

package web1;import java.util.concurrent.atomic.AtomicInteger;public class ThreadTest3 extends Thread {    private AtomicInteger count ;    private String word=null;    private int order;    private int runCount;    public ThreadTest3(AtomicInteger count,String word,int order,int runCount){        this.count=count;        this.word=word;        this.order=order;        this.runCount=runCount;    }    @Override    public void run() {        while (true) {            synchronized (count) {                if (count.get()%runCount==order) {                    System.out.println(word+","+count.get());                    count.getAndAdd(1);                    count.notifyAll();                    try {                        Thread.sleep(1000);                    } catch (InterruptedException e) {                        e.printStackTrace();                    }                                    } else {                    try {                        count.wait();                    } catch (InterruptedException e1) {                        e1.printStackTrace();                    }                }            }        }    }}




阅读全文
0 0
原创粉丝点击