多线程(原子类-AtomicInteger)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程(原子类-AtomicInteger)相关的知识,希望对你有一定的参考价值。

案例

10个线程并发累加一个整数,每个线程累加1000,保证线程安全

Unsafe类,来源于sun.misc包。该类封装了许多类似指针操作,可以直接进行内存管理、操纵对象、阻塞/唤醒线程等操作。

package com.jane;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;

public class Main {

    public static void main(String[] args) throws InterruptedException {

        AtomicInteger ai = new AtomicInteger();

        List<Thread> list = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            Thread t = new Thread(new Accumlator(ai), "thread-" + i);
            list.add(t);
            t.start();
        }

        for (Thread t : list) {
            t.join();
        }

        System.out.println(ai);

    }

    static class Accumlator implements Runnable {
        private AtomicInteger ai;

        Accumlator(AtomicInteger ai) {
            this.ai = ai;
        }

        @Override
        public void run() {
            for (int i = 0, len = 1000; i < len; i++) {
                ai.incrementAndGet();
            }
        }
    }
}

运行结果

技术图片

以上是关于多线程(原子类-AtomicInteger)的主要内容,如果未能解决你的问题,请参考以下文章

多线程(原子类-AtomicInteger)

java中AtomicInteger的使用

(十七)AtomicInteger原子类的介绍和使用

java笔记java中的AtomicInteger原子操作类

深入解析Java AtomicInteger 原子类型

多线程8---volatile2---多线程间变量的可见性不具备原子性---AtomicInteger