python两个线程交替打印_两个线程交替打印1-100

public class Solution2 {

private static final Object lock = new Object(); //表示对象锁

private volatile int index = 1;           //表示要输出的数字

private volatile boolean aHasPrint = false; //记录A是否被打印过

class A implements Runnable {

@Override

public void run() {

for (int i = 0; i < 50; i++) {

synchronized (lock) {

while (aHasPrint) {              //如果A已经打印过就进行阻塞

try {

lock.wait();

} catch (InterruptedException e) {

e.printStackTrace();

}

}

System.out.println("A:" + index);    //A没有打印过则输出A的值

index++;                   //输出的值增加1

aHasPrint = true;             //表示A已经打印过

lock.notifyAll();            //唤醒其它线程执行

}

}

}

}

class B implements Runnable {

@Override

public void run() {

for (int i = 0; i < 50; i++) {

synchronized (lock) {

while (!aHasPrint) { //如果A没有打印过则阻塞

try {

lock.wait();

} catch (InterruptedException e) {

e.printStackTrace();

}

}

System.out.println("B:" + index);  //输出B的值

index++;                 //计数加一

aHasPrint = false;          //B打印完了说明新的一轮开始了,将标识为计为A没有打印过

lock.notifyAll();          //唤醒阻塞线程

}

}

}

}

public static void main(String[] args) {

Solution2 solution2 = new Solution2();

Thread threadA = new Thread(solution2.new A());

Thread threadB = new Thread(solution2.new B());

threadA.start();

threadB.start();

}

}

相关代码 https://github.com/LiWangCai/blogRelated 可自行获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值