zoukankan      html  css  js  c++  java
  • 三个线程,ABC 10次(volatile+synchronized)

    package ThreadABC;

    public class Share {
    private volatile int status;

    public int getStatus() {
    return status;
    }

    public void setStatus(int status) {
    this.status = status;
    }

    public Share(int status) {
    this.status = status;
    }
    }

    package ThreadABC;

    public class A implements Runnable {
    private int num =0;
    private Share lock;
    @Override
    public void run() {
    for(;num < 10;){
    if(lock.getStatus()%3==1) {
    System.out.print("A");
    synchronized(lock) {
    lock.setStatus(lock.getStatus()+1);
    }
    num++;
    }
    }
    }

    public int getNum() {
    return num;
    }

    public void setNum(int num) {
    this.num = num;
    }

    public A(Share lock) {
    this.lock = lock;
    }
    }

    package ThreadABC;

    public class B implements Runnable {
    private int num =0;
    private Share lock;
    @Override
    public void run() {
    for(;num < 10;){
    if(lock.getStatus()%3==2) {
    System.out.print("B");
    synchronized(lock) {
    lock.setStatus(lock.getStatus()+1);
    }
    num++;
    }
    }
    }

    public B(Share lock) {
    this.lock = lock;
    }
    }

    package ThreadABC;

    public class C implements Runnable {
    private int num =0;
    private Share lock;
    @Override
    public void run() {
    for(;num < 10;){
    if(lock.getStatus()%3==0) {
    System.out.println("C");
    synchronized(lock) {
    lock.setStatus(lock.getStatus()+1);
    }
    num++;
    }
    }
    }

    public int getNum() {
    return num;
    }

    public void setNum(int num) {
    this.num = num;
    }

    public C(Share lock) {
    this.lock = lock;
    }
    }

    package ThreadABC;

    public class Test {
    public static void main(String[] args){
    Share o = new Share(1);
    A a = new A(o);
    B b = new B(o);
    C c = new C(o);
    Thread a1 = new Thread(a);
    Thread b1 = new Thread(b);
    Thread c1 = new Thread(c);
    a1.start();
    b1.start();
    c1.start();
    }
    }


  • 相关阅读:
    个人兴趣与公司业务的关系
    分析能力的8个等级(转)
    DSL应用的优点
    架构师应具备的概要技能
    Cheetah
    不能运行VS2005的DSL Tool例子
    推荐:原型工具GUI Design Studio
    Viewpoints 1.0 for Visual Studio .NET 2008
    原创故事 - 不死鸡和不死牛的故事
    Antlr构建表达式引擎
  • 原文地址:https://www.cnblogs.com/mlz-2019/p/9539733.html
Copyright © 2011-2022 走看看