JAVA_IIBRARY Telegram 1712
Вот задача для собеседования по Java

У вас есть два потока.
Поток 1 печатает нечётные числа.
Поток 2 печатает чётные числа.

Как их синхронизировать так, чтобы вывод всегда шёл по порядку:
1 2 3 4 5…

Звучит просто, но заставляет внимательно подумать о координации потоков.

Ответ

Самый аккуратный способ это использовать семафоры.

Семафор управляет набором разрешений (токенов). Поток, вызывающий acquire, забирает разрешение, и если его нет — ждёт. Поток, вызывающий release, возвращает разрешение, чем будит ожидающий поток.

Мы создаём два семафора: один для нечётных, другой для чётных.
Семафор для нечётных изначально имеет 1 разрешение, чтобы первый поток мог стартовать, а для чётных — 0, чтобы он ждал. После того как нечётный поток печатает число, он делает release для чётного. Чётный поток делает acquire, печатает, и отдаёт разрешение обратно нечётному.

Такое чередование гарантирует точную последовательность 1 2 3 4 … без активного ожидания, без sleep и без гонок.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18👍8👀42🏆2



tgoop.com/Java_Iibrary/1712
Create:
Last Update:

Вот задача для собеседования по Java

У вас есть два потока.
Поток 1 печатает нечётные числа.
Поток 2 печатает чётные числа.

Как их синхронизировать так, чтобы вывод всегда шёл по порядку:
1 2 3 4 5…

Звучит просто, но заставляет внимательно подумать о координации потоков.

Ответ

Самый аккуратный способ это использовать семафоры.

Семафор управляет набором разрешений (токенов). Поток, вызывающий acquire, забирает разрешение, и если его нет — ждёт. Поток, вызывающий release, возвращает разрешение, чем будит ожидающий поток.

Мы создаём два семафора: один для нечётных, другой для чётных.
Семафор для нечётных изначально имеет 1 разрешение, чтобы первый поток мог стартовать, а для чётных — 0, чтобы он ждал. После того как нечётный поток печатает число, он делает release для чётного. Чётный поток делает acquire, печатает, и отдаёт разрешение обратно нечётному.

Такое чередование гарантирует точную последовательность 1 2 3 4 … без активного ожидания, без sleep и без гонок.

👉 Java Portal

BY Java Portal | Программирование




Share with your friend now:
tgoop.com/Java_Iibrary/1712

View MORE
Open in Telegram


Telegram News

Date: |

Private channels are only accessible to subscribers and don’t appear in public searches. To join a private channel, you need to receive a link from the owner (administrator). A private channel is an excellent solution for companies and teams. You can also use this type of channel to write down personal notes, reflections, etc. By the way, you can make your private channel public at any moment. As the broader market downturn continues, yelling online has become the crypto trader’s latest coping mechanism after the rise of Goblintown Ethereum NFTs at the end of May and beginning of June, where holders made incoherent groaning sounds and role-played as urine-loving goblin creatures in late-night Twitter Spaces. The court said the defendant had also incited people to commit public nuisance, with messages calling on them to take part in rallies and demonstrations including at Hong Kong International Airport, to block roads and to paralyse the public transportation system. Various forms of protest promoted on the messaging platform included general strikes, lunchtime protests and silent sit-ins. Invite up to 200 users from your contacts to join your channel Concise
from us


Telegram Java Portal | Программирование
FROM American