欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于多线程变量共享问题_改进

程序员文章站 2022-05-02 13:25:49
...
package com.sysware.task.util;

import java.util.concurrent.atomic.AtomicInteger;

/**
 * 多线程
 *
 * @author : WBA
 * @version : 2.9.6
 * @copyright : Sysware Technology
 * @date : 2018/4/8 16:42
 */
public class MultiThread implements Runnable {

    private static AtomicInteger count = new AtomicInteger(10);

    String name = "";

    MultiThread(String name) {
        this.name = name;
    }

    public static void main(String[] args) {
        new Thread(new MultiThread("T1")).start();
        new Thread(new MultiThread("T2")).start();
        new Thread(new MultiThread("T3")).start();
    }

    @Override
    public void run() {
        count.getAndIncrement();
        System.out.println(Thread.currentThread().getName() + ":" + count);
    }
}

class Add implements Runnable {

    private static AtomicInteger count;

    Add(AtomicInteger count) {
        this.count = count;
    }

    @Override
    public void run() {
        count.getAndIncrement();
        System.out.println(Thread.currentThread().getName() + ":" + count);
    }
}

class Reduce implements Runnable {

    private static AtomicInteger count;

    Reduce(AtomicInteger count) {
        this.count = count;
    }

    @Override
    public void run() {
        count.getAndDecrement();
        System.out.println(Thread.currentThread().getName() + ":" + count);
    }
}

运行结果

Thread-0:11
Thread-1:12
Thread-2:13

 

转载于:https://my.oschina.net/Tsher2015/blog/1791338