python两个线程交替打印_多线程之两个线程交替打印的问题分析

本文探讨了在Python中实现两个线程交替打印"A"和"B"的常见问题,包括线程同步和资源竞争。分析了由于wait()和notify()的使用不当导致的死锁情况,并给出了修正后的代码示例,确保线程能正确交替执行并完成各自的任务。此外,还提出了一个更复杂的场景,即两个线程交替输出字符串中的字符,同样分析了问题并提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景一

在我们面试中经常会有这么一个场景,就是我们用线程A输出“A”字符,有线程B输出“B”字符,交替进行,要求A线程执行完任务输出:“A线程打印完了”,B线程执行完任务输入:“B线程打印完了”,最后有主线程输出一句话“我打印完了”!

当你看到这个场景时,有点多线程经验的人肯定会感觉很容易,然后有可能进行下面的实现,上代码:

//A线程类

public class ThreadA extendsThread {privateTestThread testThread;publicThreadA(TestThread testThread){this.testThread=testThread;

}

@Overridepublic voidrun(){for(int i=0;i<5;i++){

testThread.printStr("A");

}

System.out.println("a线程打印完了");

}

}//B线程类

public class ThreadB extendsThread {privateTestThread testThread;publicThreadB(TestThread testThread){this.testThread=testThread;

}

@Overridepublic voidrun(){for(int i=0;i<5;i++){

testThread.printStr("B");

}

System.out.println("b线程打印完了");

}

}//测试类

public classTestThread {public static voidmain(String[] args){

TestThread testThread=newTestThread();

ThreadA threadA= newThreadA(testThread);

ThreadB threadB= newThreadB(testThread);

threadA.setName("threadA");

threadB.setName("threadB");

threadB.setPriority(2)//这个目的是将B线程的优先级降低,让A线程先执行,使得在打印的时候先打印“A”,但是我要说但是ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值