Веб-версияОткрыть в Telegram

Пост🤔 Каким образом можно заставить поток выполнится приоритет и есть ли такая возможность в Java?

7 сентября 2026
J
Java | Вопросы собесов
🤔 Каким образом можно заставить поток выполнится приоритет и есть ли такая возможность в Java? В Java у каждого потока есть приоритет, но он не гарантирует порядок выполнения. 🟠Использование `setPriority(int priority)` Java позволяет задавать приоритет потока с помощью метода setPriority(), который принимает значение от 1 до 10: Thread.MIN_PRIORITY (1) – минимальный приоритет Thread.NORM_PRIORITY (5) – стандартный приоритет (по умолчанию) Thread.MAX_PRIORITY (10) – максимальный приоритет class MyThread extends Thread { public MyThread(String name, int priority) { super(name); setPriority(priority); } @Override public void run() { for (int i = 0; i < 5; i++) { System.out.println(getName() + " выполняется с приоритетом " + getPriority()); } } } public class Main { public static void main(String[] args) { MyThread low = new MyThread("Low Priority", Thread.MIN_PRIORITY); MyThread high = new MyThread("High Priority", Thread.MAX_PRIORITY); low.start(); high.start(); } } 🟠Почему `setPriority()` не даёт 100% контроль? Приоритет – это всего лишь рекомендация для ОС. Распределение процессорного времени зависит от планировщика ОС. В Windows, Linux, macOS приоритеты работают по-разному, и Java не контролирует их на низком уровне. 🟠Как действительно заставить поток выполниться первым? Реальные способы управления порядком выполнения: а) Использование join() Позволяет дождаться выполнения одного потока перед запуском другого. public class Main { public static void main(String[] args) throws InterruptedException { Thread high = new MyThread("High Priority", Thread.MAX_PRIORITY); Thread low = new MyThread("Low Priority", Thread.MIN_PRIORITY); high.start(); high.join(); // Ждём, пока high завершится low.start(); // Теперь запускается low } } б) Использование Executors.newSingleThreadExecutor() Позволяет гарантированно выполнять потоки по очереди. import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class Main { public static void main(String[] args) { ExecutorService executor = Executors.newSingleThreadExecutor(); executor.submit(() -> System.out.println("Задача 1")); executor.submit(() -> System.out.println("Задача 2")); executor.shutdown(); } } Ставь 👍 и забирай 📚 Базу знаний
7 · 1.2K ·

Рядом в ленте

JJava | Вопросы собесов🤔 Какие типы данных есть в контексте JVM? В контексте JVM (Java Virtual Machine) типы данных делятся на два основных класса: примитивные типы данных и ссылочныеJJava | Вопросы собесов🤔 Что известно про приведение типов? Что такое понижение и повышение типа? - Повышение типа (Widening) — безопасное преобразование от меньшего типа к большему (
это сообщение
JJava | Вопросы собесов🤔 Перечисли основные виды селекторов. Основные виды селекторов: - Селектор по тегу (div, p); - Селектор по классу (.my-class); - Селектор по идентификатору (#myJJava | Вопросы собесов🤔 Что такое heap, stack? В контексте Java, Heap (куча) и Stack (стек) являются областями памяти, используемыми JVM для управления памятью, необходимой для выпол
JJava | Вопросы собесовJava | Вопросы собесов@easy_java_ru · канал · Технологии
11 337подписчиков1 098средний охват поста
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Чего мы не делаем · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем