package Lesson5;
//三个线程打印十次 ABC ABC
public class SequencePrint2 {
private volatile static String[] INFOS={"A","B","C"};
private volatile static int index; //数组下标
public static void main(String[] args) {
new Thread(new Tast("A")).start();
new Thread(new Tast("B")).start();
new Thread(new Tast("C")).start();
}
static class Tast implements Runnable {
private String name;
public Tast(String name) {
this.name = name;
}
@Override
public void run() {
try {
for (int i = 0; i <10; i++) {
synchronized (SequencePrint2.class) {
while (!name.equals(INFOS[index])) {
SequencePrint2.class.wait();
}
//name=INFOS[index]
System.out.println(name);
if(index==INFOS.length-1){
//遇到C就换行
System.out.println();
}
//下一个要打印的下标,因为数组循环打印(循环队列)加1取模数组的长度
index = (index + 1) % INFOS.length;
SequencePrint2.class.notifyAll();
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
package Lesson5;
//三个线程打印十次 ABC ABC
public class SequencePrint {
private volatile static String index="A"; //当前打印的字符串
public static void main(String[] args) {
Thread a=new Thread(new Runnable() {
@Override
public void run() {
try {
for(int i=0;i<=9;i++){
synchronized (SequencePrint.class){
while (!index.equals("A")){
SequencePrint.class.wait();
}
System.out.println(index);
index="B";
SequencePrint.class.notifyAll();
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
Thread b=new Thread(new Runnable() {
@Override
public void run() {
try {
for(int i=0;i<=9;i++){
synchronized (SequencePrint.class){
while (!index.equals("B")){
SequencePrint.class.wait();
}
System.out.println(index);
index="C";
SequencePrint.class.notifyAll();
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
Thread c=new Thread(new Runnable() {
@Override
public void run() {
try {
for(int i=0;i<=9;i++){
synchronized (SequencePrint.class){
while (!index.equals("C")){
SequencePrint.class.wait();
}
System.out.println(index);
index="A";
SequencePrint.class.notifyAll();
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
a.start();
b.start();
c.start();
}
}