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();
    }
    }


  • 相关阅读:
    Intellij IDEA 一些不为人知的技巧
    IDEA配置GIT
    返回数据
    IDEA字体设置
    @RequestParam
    @RequestMapping
    基于jquery fly插件实现加入购物车抛物线动画效果,jquery.fly.js
    js倒计时代码 适合于促销-倒计时代码
    phpstorm 10 注册码
    dispaly:table-cell,inline-block,阐述以及案例
  • 原文地址:https://www.cnblogs.com/mlz-2019/p/9539733.html
Copyright © 2011-2022 走看看