Как настроить справедливость между заданными k потоками для генерации некоторого результата?
Другими словами, представьте, что у нас есть k нитей, которые печатают «1» и «нить» «2».
Теперь, как мы можем установить справедливость между потоками, чтобы каждый поток печатал (например, «1») столько же, сколько и другой (k - 1) отпечаток (например, «1») и тот же для n-ниточной печати «2».Откорректируйте справедливость в многопоточности
ответ
ну, я понимаю немного, вы можете сделать, чтобы нить напечатала число, если вы отправите это число своему конструктору. , например:
public class MyThread extends Thread
{
int number = 0;
public MyThread(int number) {
this.number = number;
}
@Override
public void run()
{
while(true) {
System.out.println(this.number);
this.sleep(1000);//control exception
}
}
}
затем в главном
public class Main() {
public static void main(String[] args) {
int k = 10
for(int i = 0; i < k; k++) {
MyThread mt = new MyThread(1);
mt.start();
mt.join();
}
}
}
Вы должны повторить подобную форму для печати Тема 2
Перед созданием темы, создать массив [0..numThreads -1] пустых семафоров, по одному для каждого потока, который вы собираетесь создать. Сигнал к каждому потоку при его создании увеличивает индекс семафора, 0..numThreads-1.
В функции потока подождите его семафор [index], затем напечатайте что-нибудь, затем сообщите семафор [(index + 1) mod numThreads], затем зациклируйте, чтобы снова ждать семафора [index].
Как только вы это сделали, ничего не должно произойти вообще.
Бросьте в один блок семафора, где угодно.
может объяснить вам немного больше об этом? – user2625638
Это эссенциально пропускает «токен печати» вокруг потоков. Когда нить печатала что-то, она передает токен следующему, и это продолжается круговым способом. –
Я просто хочу знать, где ждать() и где уведомлять поток об этом. – user2625638
- 1. Как обеспечить справедливость для пользователей в многопоточности
- 2. ExecutorService справедливость
- 3. Справедливость в классе семафора
- 4. Справедливость в ScheduledExecutorService
- 5. Справедливость: где его лучше обрабатывать?
- 6. JVM справедливость при планировании потоков
- 7. Обеспечивает ли справедливость планирование FIFO?
- 8. Справедливость сокета write() в двух параллельных соединениях?
- 9. Откорректируйте масштаб PDF для печати
- 10. Откорректируйте громкость в Google Native-Client
- 11. Выполнение задачи многопоточности java многопоточности
- 12. Фильтр алгоритм взаимного исключения: Слабое справедливость
- 13. iPhone: Откорректируйте ящик для содержимого внутри
- 14. Откорректируйте отношения «многие-многие друзья» для пользователей
- 15. Откорректируйте TextextSharp Text Extraction Newline Threshold
- 16. Откорректируйте пакет .msi из веб-приложения ASP.NET
- 17. Откорректируйте форму поиска на Navbar Bootstrap 3
- 18. Откорректируйте диаграмму диаграммы Положение на графике
- 19. Откорректируйте аккордеон, чтобы разрешить использование текущего содержимого.
- 20. Использование многопоточности в циклах
- 21. Ошибки многопоточности в C#
- 22. Синхронизация многопоточности в Java
- 23. Socket fd в многопоточности
- 24. Ошибка SEgemenattation в многопоточности
- 25. путаница в отношении многопоточности
- 26. Помощь многопоточности в VB.NET
- 27. Нужна помощь в многопоточности
- 28. Достижение многопоточности в javascript
- 29. Механизм соединения() в многопоточности
- 30. toolStripStatusLabel в многопоточности
Я думаю, что я должен обработать его с помощью метода ожидания и уведомления, но я не знаю, как это сделать? – user2625638