Untitled
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); }