1.使用synchronized锁来实现三个交替输出abc
- 利用一个标记flag:当flag=1时打印a,当flag=2时打印b,当flag=3时打印c,
- 并且在调用打印方法时打印完还需传递flag的下一个值,即a(1)->2,b(2)->3,c(3)->1,
- 这里使用wait ,notify的有条件休眠来控制程序的进行,
- 使用wait和notify的配套使用来进行交替打印:
- wait: 调用该方法会使当前线程进入阻塞状态并释放了当前的锁资源给其他线程去使用,是object类下的方法;
- notify:调用该方法可以唤醒单个休眠的线程,这里我们使用notifyAll来唤醒线程,使符合条件的线程执行自己
- 的操作,不符合的话就继续休眠,直到被再次唤醒进行判断。
- 源代码:
package com.thread.text;/*
* @Author sds
* @Description //利用wait ,notify 实现交替打印a,b,c
*/
import jdk.nashorn.internal.ir.Flags;
public class diffPrint {
public static void main(String[] args) {
waitnotify wt = new waitnotify(5,1);
new Thread(()->{
//线程一
wt.print("a",1,2);
}).start();
new Thread(()->{
//线程二
wt.print("b",2,3);
}).start();
new Thread(()->{
//线程三
wt.print("c"