创建ABC三个线程,BC线程同时(不分先后)执行业务代码,A线程存储BC线程执行后的结果,且A线程在BC线程执行完之后执行。

package com.Test;
public class Test4 {
    //x用于BC线程执行业务代码
    public static int x = 2;
    //y用于计数,即统计当前线程执行的个数。
    public static int y = 0;
    //用于简单存储BC线程执行完的x。
    public static int z = 0;
    public static void main(String[] args) throws Exception {
        A a = new A();
        B b = new B();
        C c = new C();
        a.start();
        b.start();
        c.start();
    }
}

class A extends Thread {
    public void run() {
        synchronized ("a"){
            //为什么判断条件用2,因为只有BC两个线程,当计数器y不等于2时,本线程继续等待,否则执行。
            while (Test4.y != 2){
                try {
                    "a".wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            System.out.println("执行A");
            //将BC执行完的结果x赋给z就当做是存储吧!
            System.out.println(Test4.z=Test4.x);
        }
    }
}
class B extends Thread {
    public void run() {
        synchronized ("a"){
            while(Test4.y == 2){
                try {
                    "a".wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            System.out.println("执行B");
            //执行业务代码
            Test4.x = Test4.x + 5;
            //计数器加1
            Test4.y=Test4.y+1;
            "a".notifyAll();
        }
    }
}
class C extends Thread {
    public void run() {
        synchronized ("a"){
            while(Test4.y == 2){
                try {
                    "a".wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            System.out.println("执行C");
            //执行业务代码
            Test4.x = Test4.x - 4;
            //计数器加1
            Test4.y = Test4.y+1;
            "a".notifyAll();
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值