多线程之交替输出

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"
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值