Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Завдання: ConcurrentMap | Синхронізовані Колекції
Багатопотоковість у Java

bookЗавдання: ConcurrentMap

Завдання:

Реалізація багатопотокової системи обліку відвідувань сайту.

Опис:

Необхідно створити програму для обліку кількості відвідувань різних сторінок сайту. Програма повинна коректно працювати у багатопотоковому середовищі, де декілька потоків можуть одночасно збільшувати лічильники відвідувань для різних сторінок.

Вимоги:

  • Використання ConcurrentHashMap для зберігання даних про відвідування сторінок;
  • Реалізація методу, який збільшує лічильник відвідувань для заданої сторінки. incrementVisit();
  • Реалізація методу, який повертає поточний лічильник відвідувань для заданої сторінки. getVisitCount();
  • Створення декількох потоків, які будуть одночасно збільшувати лічильники відвідувань. (Це реалізовано у класі Main, необхідно розібратися, що там відбувається).

Підказки:

  • Використання ConcurrentHashMap для зберігання даних, де ключем є URL сторінки, а значенням — лічильник відвідувань;
  • Використання методів compute() або merge() для атомарного оновлення лічильників у ConcurrentHashMap.

Потрібно реалізувати методи у класі PageVisitCounterImpl, а потім запустити тести у класі PageVisitCounterTest.

Після успішного виконання завдання всі тести мають пройти.

Note
Примітка

Після того як усе зроблено правильно, можна спробувати змінити рядок, де оголошується ConcurrentMap у класі PageVisitCounterImpl, і подивитися, що станеться.

Тобто потрібно замінити цей рядок тут на реалізацію ConcurrentMap.

Main.java

Main.java

copy
1
private final ConcurrentMap<String, Integer> visitCounts = new ConcurrentHashMap<>();

У цьому завданні використовується реалізація звичайного Map

Main.java

Main.java

copy
1
private final Map<String, Integer> visitCounts = new HashMap<>();
Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 6

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Suggested prompts:

Can you show me the code for the PageVisitCounterImpl class?

What do the incrementVisit() and getVisitCount() methods currently look like?

Can you explain how the Main class is creating and running the threads?

Awesome!

Completion rate improved to 3.33

bookЗавдання: ConcurrentMap

Свайпніть щоб показати меню

Завдання:

Реалізація багатопотокової системи обліку відвідувань сайту.

Опис:

Необхідно створити програму для обліку кількості відвідувань різних сторінок сайту. Програма повинна коректно працювати у багатопотоковому середовищі, де декілька потоків можуть одночасно збільшувати лічильники відвідувань для різних сторінок.

Вимоги:

  • Використання ConcurrentHashMap для зберігання даних про відвідування сторінок;
  • Реалізація методу, який збільшує лічильник відвідувань для заданої сторінки. incrementVisit();
  • Реалізація методу, який повертає поточний лічильник відвідувань для заданої сторінки. getVisitCount();
  • Створення декількох потоків, які будуть одночасно збільшувати лічильники відвідувань. (Це реалізовано у класі Main, необхідно розібратися, що там відбувається).

Підказки:

  • Використання ConcurrentHashMap для зберігання даних, де ключем є URL сторінки, а значенням — лічильник відвідувань;
  • Використання методів compute() або merge() для атомарного оновлення лічильників у ConcurrentHashMap.

Потрібно реалізувати методи у класі PageVisitCounterImpl, а потім запустити тести у класі PageVisitCounterTest.

Після успішного виконання завдання всі тести мають пройти.

Note
Примітка

Після того як усе зроблено правильно, можна спробувати змінити рядок, де оголошується ConcurrentMap у класі PageVisitCounterImpl, і подивитися, що станеться.

Тобто потрібно замінити цей рядок тут на реалізацію ConcurrentMap.

Main.java

Main.java

copy
1
private final ConcurrentMap<String, Integer> visitCounts = new ConcurrentHashMap<>();

У цьому завданні використовується реалізація звичайного Map

Main.java

Main.java

copy
1
private final Map<String, Integer> visitCounts = new HashMap<>();
Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 6
some-alt