Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 19.02.2022
Сообщений: 14

Многопоточность java

21.05.2023, 22:47. Показов 739. Ответов 3

Студворк — интернет-сервис помощи студентам
Суть вопроса: необходимо создать класс реализующий метод Runnable, переопределить метод run() в цикле распечатать числа от 1 до 3, создать три потока, одновременно распечатывающих числа, желательно использовать статический метод Thread.sleep() и ещё если есть желание чтобы перед выводом чисел выводило имя потока.
То бишь вывод будет что-то около
1
1
1
2
2
2
3
3
3
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.05.2023, 22:47
Ответы с готовыми решениями:

Многопоточность в java
При работе программы выскакивает ошибка данная ошибка: Index 4 out of bounds for length 4 на 33ей строке в классе...

Многопоточность
Добрый день. Нужно переделать класс для запуска метода AddBatchStatement в несколько потоков для повышения производительности. Не...

Многопоточность
1. В офисе, где работают 20 человек, есть 2 сетевых принтера, куда работники сбрасывают свои файлы для печати. Реализовать данную...

3
 Аватар для Coffeini
753 / 370 / 133
Регистрация: 01.02.2020
Сообщений: 1,096
Записей в блоге: 1
21.05.2023, 23:24
Лучший ответ Сообщение было отмечено KyPcaHT как решение

Решение

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import java.io.PrintStream;
import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;
import java.util.concurrent.Executors;
 
public class Main {
    public static void main(String[] args) {
        int n = 3;
        var barrier = new CyclicBarrier(n);
        var tp = Executors.newFixedThreadPool(n);
        try {
            for (int i = 0; i < n; ++i) tp.execute(new Printer(barrier, System.out, true));
        } finally {
            tp.shutdown();
        }
    }
}
 
 
class Printer implements Runnable {
 
    private final CyclicBarrier barrier;
    private final PrintStream out;
    private final boolean isPrintNameThread;
 
    Printer(CyclicBarrier barrier, PrintStream out, boolean isPrintNameThread) {
        this.barrier = barrier;
        this.out = out;
        this.isPrintNameThread = isPrintNameThread;
    }
 
    @Override
    public void run() {
        for (int i = 1; i <= 3; ++i) {
            try {
                barrier.await();
                out.println(i + (isPrintNameThread ? " " + Thread.currentThread().getName() : ""));
                barrier.await();
            } catch (InterruptedException e) {
                Thread.currentThread().interrupt();
            } catch (BrokenBarrierException ignored) {
 
            }
        }
    }
}
Добавлено через 3 минуты
Через sleep:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Printer implements Runnable {
 
    private final PrintStream out;
    private final boolean isPrintNameThread;
 
    Printer(PrintStream out, boolean isPrintNameThread) {
        this.out = out;
        this.isPrintNameThread = isPrintNameThread;
    }
 
    @Override
    public void run() {
        for (int i = 1; i <= 3; ++i) {
            try {
                Thread.sleep(0, 1);
                out.println(i + (isPrintNameThread ? " " + Thread.currentThread().getName() : ""));
            } catch (InterruptedException e) {
                Thread.currentThread().interrupt();
            }
        }
    }
}
1
0 / 0 / 0
Регистрация: 19.02.2022
Сообщений: 14
22.05.2023, 09:05  [ТС]
Спасибо большое, остались только пара вопросов: можно ли было сделать это без пула?, можно ли в этом пуле через setName установить имя каждому потоку, и для чего в конструкторе нужны параметры Printstream и boolean isPrintNameThread
0
 Аватар для Coffeini
753 / 370 / 133
Регистрация: 01.02.2020
Сообщений: 1,096
Записей в блоге: 1
22.05.2023, 11:30
Цитата Сообщение от KyPcaHT Посмотреть сообщение
можно ли было сделать это без пула
Да.
Цитата Сообщение от KyPcaHT Посмотреть сообщение
через setName установить имя каждому потоку
Надо перегружать фабрику потоков. Через setThreadFactory(), например.
Цитата Сообщение от KyPcaHT Посмотреть сообщение
для чего в конструкторе нужны параметры Printstream и boolean isPrintNameThread
Цитата Сообщение от KyPcaHT Посмотреть сообщение
если есть желание чтобы перед выводом чисел выводило имя потока.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.05.2023, 11:30
Помогаю со студенческими работами здесь

Многопоточность Java
Помогите с заданием. В текстовом файле записаны слова (для простоты – в каждой строке одно слово). Из файла данные читаются тремя...

Многопоточность в java
Добрый день. Появился вопрос по многопоточности: Есть 3 класса: public class main { public static void main(String args) { ...

Многопоточность. Калькулятор. Java
Всем Привет. В теории я ознакомлен с многопоточностью, но не могу ее применить в практике. Прошу подскажите на примере как реализовать...

Java Derby многопоточность
Всем привет. Кто сталкивался с derby, не могу понять вроде на сайте написано, что она много поточная, но по тестам получается не очень...

Многопоточность. Java. Блокировка
Здравствуйте! Задание такое: есть автобусы(потоки), есть остановки, максимальное количество автобусов на остановке 2, если на остановке два...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru