ABC

    技术2024-06-22  69

     

    public class Test4 implements Runnable{

    private String nowStr;

    private String nextStr;

    private MyLock lock;

    public Test4(String nowStr,String nextStr,MyLock lock){

    this.nowStr= nowStr;

    this.nextStr=nextStr;

    this.lock = lock;

    }

    public Test4(){}

    public void run() {

    int i =0;

    while(i<10){

    if(lock != null && lock.getStr()!=null &&lock.getStr().equals(nowStr)){

    i++;

    System.out.print(nowStr);

    if(nowStr.equals("C"))

    System.out.println();

    lock.setStr(nextStr);

    }

    }

    }

    public static void main(String[] args) throws InterruptedException {

    MyLock lock = new Test4().new MyLock();

    lock.setStr("A");

    Test4 tha = new Test4("A","B",lock);

    Test4 thb = new Test4("B","C",lock);

    Test4 thc = new Test4("C","A",lock);

    new Thread(tha).start();

    new Thread(thb).start();

    new Thread(thc).start();

    }

    class MyLock{

    private String str;

    public MyLock(){}

    public String getStr() {

    return str;

    }

    public void setStr(String str) {

    this.str = str;

    }

    }

    }

     

    package thread1;

     

    /**

     * @author pangxinhua

     * @effect Insert the effect of the file

     * @date 2011-3-10 上午10:37:36

     */

    public class ThreadTest extends Thread {

    private static String str = "A";

    private String flag;

    private static byte[]b = new byte[0];

    public ThreadTest(String flag) {

    this.flag = flag;

    }

     

    @Override

    public void run() {

    for (int i = 0; i < 10;) {

     

    //synchronized (this) {

    if (flag.equals(str)) {

    System.out.print(str);

    i++;

    if (flag.equals("C")) {

    System.out.println();

    }

    if (flag.equals("A")) {

    str = "B";

    } else if (flag.equals("B")) {

    str = "C";

    } else if (flag.equals("C")) {

    str = "A";

    }

    // }

     

    }

    }

    }

     

    public static void main(String[] args) {

    new Thread(new ThreadTest("A")).start();

    new Thread(new ThreadTest("B")).start();

    new Thread(new ThreadTest("C")).start();

    }

    }

     

     

    最新回复(0)