package Thread_;
public class From1to100 {
public static void main(String[] args) {
SyncStack ss = new SyncStack();
B b =new B(ss);
A a =new A(ss);
C c =new C(ss);
b.start();
a.start();
c.start();
}
}
class SyncStack{
int i=1;
int num=0;
boolean flag = true;
boolean flag2= true;
public synchronized void jiafa(){
num++;
System.out.println(Thread.currentThread().getName()+"~~"+i++);
if(i==100)
flag=false;
if(flag2==true){
try {
flag2= false;
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if(flag2 == false)
{
flag2 = true;
this.notifyAll();
}
}
}
class A extends Thread{
SyncStack ss = null;
public A(SyncStack ss){
this.ss=ss;
}
@Override
public void run() {
while (ss.flag) {
if(ss.num%3==0)
ss.jiafa();
}
}
}
class B extends Thread{
SyncStack ss = null;
public B(SyncStack ss){
this.ss=ss;
}
@Override
public void run() {
while (ss.flag) {
if(ss.num%3==1)
ss.jiafa();
}
}
}
class C extends Thread{
SyncStack ss = null;
public C(SyncStack ss){
this.ss=ss;
}
@Override
public void run() {
while (ss.flag) {
if(ss.num%3==2)
ss.jiafa();
}
}
}
多线程打印1到00
最新推荐文章于 2022-04-02 15:22:32 发布