Cuplikan KivaKit #6

Jan 03 2023
Lebih lanjut tentang KivaKit https://state-of-the-art.org/https://www.
Kode

package com.telenav.kivakit.snippets;

import com.telenav.kivakit.core.collections.list.ObjectList;
import com.telenav.kivakit.core.language.trait.TryTrait;
import com.telenav.kivakit.core.thread.ThreadLocalMap;
import com.telenav.kivakit.core.value.count.Count;
import com.telenav.kivakit.core.value.count.MutableCount;

import java.util.concurrent.Future;

import static com.telenav.kivakit.core.collections.list.ObjectList.list;
import static com.telenav.kivakit.core.ensure.Ensure.ensureEqual;
import static com.telenav.kivakit.core.thread.Threads.shutdownAndAwaitTermination;
import static com.telenav.kivakit.core.thread.Threads.threadPool;
import static com.telenav.kivakit.core.value.count.Count._10_000;
import static com.telenav.kivakit.core.value.count.Count._8;

public class Snippet6 extends BaseSnippet implements TryTrait
{
    public static void main(String[] args)
    {
        new Snippet6().run();
    }

    @Override
    protected Object onSnippet()
    {
        var threads = _8;
        var iterations = _10_000;

        var map = new ThreadLocalMap<Integer, Integer>();

        var executor = threadPool("Snippet-6", threads);
        ObjectList<Future<Count>> futures = list();
        threads.loop(() -> futures.add(executor.submit(() ->
        {
            iterations.forEachInteger(i -> map.put(i, i));
            iterations.forEachInteger(i -> ensureEqual(i, map.get(i)));
            return iterations;
        })));

        var total = new MutableCount();
        for (var future : futures)
        {
            total.plus(tryCatch(() -> future.get()));
        }

        shutdownAndAwaitTermination(executor);
        return total;
    }
}

      
                
Output
80,000

Lebih lanjut tentang KivaKit

https://state-of-the-art.org/
https://www.kivakit.org/

Artikel Terkait

Cuplikan KivaKit #1
Cuplikan KivaKit #2
Cuplikan KivaKit #3

Enam Alasan Mengapa Sebagian Besar Java yang Anda Lihat Bukan Java Asli
Mengapa Host Bukan String dan Port Bukan Integer
Integer Bukan Hitungan
Semuanya Membagi dan Menaklukkan