Rumah  >  Artikel  >  Java  >  Bagaimana untuk menambah nombor menggunakan fungsi LongAdder dalam Java

Bagaimana untuk menambah nombor menggunakan fungsi LongAdder dalam Java

PHPz
PHPzasal
2023-06-26 18:33:201569semak imbas

Di Jawa, jika kita perlu mengumpul nombor, kita biasanya menggunakan pembilang mudah atau pembolehubah atom. Walau bagaimanapun, kaedah ini mempunyai kelemahan, iaitu, dalam keadaan konkurensi yang tinggi, sejumlah besar perbalahan mungkin berlaku, mengakibatkan kemerosotan prestasi. Pada masa ini, kita boleh menggunakan fungsi LongAdder yang diperkenalkan dalam Java 8 untuk menggantikan kaedah ini, dengan itu meningkatkan kecekapan pelaksanaan program.

LongAdder ialah penumpuk benang selamat di Jawa Ia menggunakan strategi terpencar untuk mengurangkan persaingan dan dengan itu meningkatkan kecekapan pelaksanaan program. Apabila berbilang benang perlu mengumpul pembilang yang sama, LongAdder akan menyuraikan nilai pembilang kepada berbilang unit Setiap unit mempunyai pembilang bebas, dan utas boleh mengumpul unit ini secara bebas. Apabila perlu untuk mendapatkan jumlah nilai kaunter, LongAdder akan mengumpul nilai semua unit untuk mendapatkan nilai kaunter akhir.

Berikut ialah contoh program untuk memperkenalkan cara menggunakan fungsi LongAdder untuk mengumpul nombor:

import java.util.concurrent.atomic.LongAdder;

public class LongAdderDemo {
    
    public static void main(String[] args) throws InterruptedException {
        
        // 创建一个LongAdder对象
        LongAdder longAdder = new LongAdder();
        
        // 创建5个工作线程进行计数器累加
        for (int i = 0; i < 5; i++) {
            new Thread(() -> {
                for (int j = 0; j < 100000; j++) {
                    longAdder.increment();
                }
            }).start();
        }
        
        // 等待所有工作线程执行完毕
        Thread.sleep(2000);
        
        // 输出计数器值
        System.out.println("计数器值:" + longAdder.sum());
    }
    
}

Dalam atur cara di atas, kita mula-mula mencipta objek LongAdder, kemudian mencipta lima benang berfungsi untuk mengumpul pembilang, dan akhirnya mengeluarkan jumlah daripada nilai kaunter. Selepas menjalankan program, kita dapat melihat output berikut:

计数器值:500000

Seperti yang dapat dilihat daripada output, LongAdder masih boleh memberikan prestasi yang sangat baik walaupun dalam keadaan konkurensi yang tinggi. Jika kita menggunakan pembilang tradisional atau pembolehubah atom untuk melaksanakan contoh ini, masalah persaingan yang serius mungkin berlaku, mengakibatkan penurunan mendadak dalam kecekapan pelaksanaan program.

Ringkasnya, LongAdder ialah fungsi akumulator yang sangat praktikal di Jawa, yang boleh meningkatkan kecekapan pelaksanaan program dengan berkesan. Jika program anda memerlukan banyak operasi pengumpulan berangka, anda mungkin mempertimbangkan untuk menggunakan LongAdder dan bukannya pembilang tradisional atau pembolehubah atom.

Atas ialah kandungan terperinci Bagaimana untuk menambah nombor menggunakan fungsi LongAdder dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn