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


  • 相关阅读:
    JSP脚本指令
    JSP编译指令——page、include
    c++基础(三):多态
    c++基础(一):数据类型和结构
    c++基础(二):成员he派生类
    python小算法(二)
    python的内存管理
    初识java之Mina(一)
    python的小爬虫的基本写法
    python小算法(一)
  • 原文地址:https://www.cnblogs.com/mlz-2019/p/9539733.html
Copyright © 2011-2022 走看看