Untitled

mail@pastecode.io avatarunknown
java
20 days ago
1.6 kB
1
Indexable
Never
public class DifferentWayToTestMultiThreadApp {
    /*
    W tym przykładzie tworzymy 10 wątków, które inkrementują zmienną counter do momentu, gdy osiągnie wartość 999. Wykorzystujemy blok synchronized, aby zapewnić,
     że tylko jeden wątek będzie mógł zmieniać wartość counter w danym czasie.
    Po zakończeniu pracy wszystkich wątków, wartość counter będzie wynosić 999, a program wyświetli to na ekranie.
     */
    private static int counter = 0;

    public static void main(String[] args) {
        int targetValue = 999;
        int numThreads = 10; // Mogę tutaj dostosować liczbę wątków do swoich potrzeb.

        Runnable incrementTask = () -> {
            while (counter < targetValue) {
                synchronized (DifferentWayToTestMultiThreadApp.class) {
                    if (counter < targetValue) {
                        counter++;
                        System.out.println(Thread.currentThread().getName() + ": Counter = " + counter);
                    }
                }
            }
        };

        Thread[] threads = new Thread[numThreads];

        for (int i = 0; i < numThreads; i++) {
            threads[i] = new Thread(incrementTask);
            threads[i].start();
        }

        try {
            for (Thread thread : threads) {
                thread.join();
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println("Wartość counter wynosi teraz: " + counter);
    }