如果不是,线程B会进入等待状态,直到flag变为false。当线程A执行完毕后,它会将flag设置为false并调用notifyAll()方法唤醒等待的线程B。 关系图 下面是一个使用Mermaid语法绘制的关系图,展示了线程A和线程B之间的协作关系: 流程图 下面是一个使用Mermaid语法绘制的流程图,展示了线程交替打印的执行流程: flowchart TD ...
步骤1: 创建两个线程 我们将创建两个线程:一个负责打印 ‘a’,另一个负责打印 ‘b’。 classPrinter{privatebooleanprintA=true;// 控制打印顺序// 打印 'a'publicsynchronizedvoidprintA(){while(!printA){try{wait();// 当前线程等待}catch(InterruptedExceptione){e.printStackTrace();}}System.out.print(...
代码思路是这样的:既然要两个线程交替打印奇偶数,那就让两个线程共享一个count,当数字是奇数是线程A打印,当数字是偶数时线程B打印,执行完打印操作后自增count,并利用wait/notify方法去阻塞和唤醒线程。接下来看代码: public class WrongCountDemo { static class PrintOdd implements Runnable { private Integer count...
1. 让线程2先wait, 然后 线程1执行打印业务之后, 叫醒线程2, 然后 自己也wait 2. 然后 再”线程1 ‘变成’ 线程2, 线程2 ‘变成’ 线程1”, 然后 在走上面的业务[这里 如此说明, 仅仅是为了突出两个线程的业务基本上是相似的, 因此 可以共用一份代码] 3. 周期性的执行 Code01 然后 我写出了我的第...
交替循环,本质思想就是对方法体进行加锁,两个线程相互通信来获取锁、释放锁,达到1212的效果。 【1】extends Thread 实践目标:使用两个线程打印 1-100. 线程1, 线程2 交替打印 其实就是多线程之间的线程通信,使用wait、notify或者notifyAll。如下的三个关键字使用的话,都得在同步代码块或同步方法中。