JAVA多线程编程,创建3个线程分别打印A,B和C,打印10次

2025-02-23 19:36:31
推荐回答(4个)
回答1:

public class Test implements Runnable {
 
    private static volatile String msg = "线程一打印A";
    private String message;
    private String next;
     
    public Test(String message, String next) {
        this.message = message;
        this.next = next;
    }
     
    public static void main(String[] args) {
        new Thread(new Test("线程一打印A", "线程二打印B")).start();
        new Thread(new Test("线程二打印B", "线程三打印C")).start();
        new Thread(new Test("线程三打印C", "线程一打印A")).start();
    }
 
    public void run() {
        for(int i = 0; i < 10;) {
            if(this.message.equals(Test.msg)) {
                System.out.println(this.message);
                Test.msg = next;
                i++;
            }
        }
    }
}

 这样写不需要同步代码, 应该会更自然点

回答2:

public class Main001 {
public static void main(String[] args) {
Threands t = new Threands();
new Thread(t).start();//线程1
new Thread(t).start();//线程2
new Thread(t).start();//线程3

}
}
class Threands implements Runnable{
private String[] arr = {"ABC","ABC","ABC","ABC","ABC","ABC","ABC","ABC","ABC","ABC"};
private int i = 0;
public synchronized void run(){
for( ; i < arr.length; i++){
System.out.print(arr[i]);
}
}
}
//或者更简单
class Threands implements Runnable{
//private String[] arr = {"ABC","ABC","ABC","ABC","ABC","ABC","ABC","ABC","ABC","ABC"};
private String str = "ABC";
private int i = 0;
public synchronized void run(){
for( ; i < 10; i++){
System.out.print(str);
}
}
}

回答3:

public class TestThread {

 private static String status = "A";

 public static void main(String[] args) {

  new Thread(new Runnable() {

   @Override

   public void run() {

    int count=10;

    for(int i=0;i
     synchronized (status) {

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

       System.out.print("A");

       status="B";

       i++;

      }

     }

    }

   }

  }).start();

  new Thread(new Runnable() {

   @Override

   public void run() {

    int count=10;

    for(int i=0;i
     synchronized (status) {

      if(status.equals("B")){

       System.out.print("B");

       status="C";

       i++;

      }

     }

    }

   }

  }).start();

  new Thread(new Runnable() {

   @Override

   public void run() {

    int count=10;

    for(int i=0;i
     synchronized (status) {

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

       System.out.print("C");

       status="A";

       i++;

      }

     }

    }

   }

  }).start();

 }

回答4:

是什么用了