Java 2013 HW8 — различия между версиями
Antonk (обсуждение | вклад) (Новая страница: «== Задачи == === Философы === В стандартной формулировке говорится о пяти философах, но, мы буд…») |
Antonk (обсуждение | вклад) (→Массив) |
||
| (не показана одна промежуточная версия этого же участника) | |||
| Строка 3: | Строка 3: | ||
=== Философы === | === Философы === | ||
В стандартной формулировке говорится о пяти философах, но, мы будем считать, что их N. Часть времени философы проводят размышляя, часть времени проводят за едой. Когда они размышляют, то не нуждаются в общих ресурсах, но во время обеда они сидят за круглым столом с ограниченным количеством столовых приборов. В описании оригинальной задачи философы пользуются вилками, и, чтобы набрать спагетти из миски в центре стола, им требуются две вилки. Наверное, задача будет выглядеть более логично, если заменить вилки палочками для еды — очевидно, что каждому философу понадобятся две палочки. | В стандартной формулировке говорится о пяти философах, но, мы будем считать, что их N. Часть времени философы проводят размышляя, часть времени проводят за едой. Когда они размышляют, то не нуждаются в общих ресурсах, но во время обеда они сидят за круглым столом с ограниченным количеством столовых приборов. В описании оригинальной задачи философы пользуются вилками, и, чтобы набрать спагетти из миски в центре стола, им требуются две вилки. Наверное, задача будет выглядеть более логично, если заменить вилки палочками для еды — очевидно, что каждому философу понадобятся две палочки. | ||
| − | <br> | + | <br><br> |
Философы, как это часто бывает, очень бедны, и они смогли позволить себе приобрести лишь N палочек . Последние разложены кругом по столу, между философами. Когда философу захочется поесть, ему придется взять палочку слева и справа. Если один философ уже взял палочку, другому философу придется подождать . | Философы, как это часто бывает, очень бедны, и они смогли позволить себе приобрести лишь N палочек . Последние разложены кругом по столу, между философами. Когда философу захочется поесть, ему придется взять палочку слева и справа. Если один философ уже взял палочку, другому философу придется подождать . | ||
| − | <br> | + | <br><br> |
В нашем случае одной палочкой для еды не могут одновременно есть два философа. | В нашем случае одной палочкой для еды не могут одновременно есть два философа. | ||
| − | <br> | + | <br><br> |
Философ должен сохранять при себе палочку, если у него получилось ее взять, и ожидать другую. | Философ должен сохранять при себе палочку, если у него получилось ее взять, и ожидать другую. | ||
| − | <br> | + | <br><br> |
Наши философы вежливы и не станут выхватывать палочки друг у друга. | Наши философы вежливы и не станут выхватывать палочки друг у друга. | ||
| − | <br> | + | <br><br> |
Ваша программа должна эмулировать этот процесс и приводить к дедлоку. | Ваша программа должна эмулировать этот процесс и приводить к дедлоку. | ||
=== Массив === | === Массив === | ||
Создать массив на N элементов и заполнить его случайными числами. Далее создать 4 потока, которые должны посчитать сумму 1/4 части массива. Каждый из этих 4 потоков (главных) создает 3, которые непосредственно занимаются суммированием, а главный поток лишь считает сумму у этих трех. После окончания 4 главных потоков main-thread должен выдать общую сумму. | Создать массив на N элементов и заполнить его случайными числами. Далее создать 4 потока, которые должны посчитать сумму 1/4 части массива. Каждый из этих 4 потоков (главных) создает 3, которые непосредственно занимаются суммированием, а главный поток лишь считает сумму у этих трех. После окончания 4 главных потоков main-thread должен выдать общую сумму. | ||
| − | <br> | + | <br><br> |
В данном задании запрещается пользоваться библиотекой java.util.concurrent | В данном задании запрещается пользоваться библиотекой java.util.concurrent | ||
Текущая версия на 10:43, 7 апреля 2013
Задачи
Философы
В стандартной формулировке говорится о пяти философах, но, мы будем считать, что их N. Часть времени философы проводят размышляя, часть времени проводят за едой. Когда они размышляют, то не нуждаются в общих ресурсах, но во время обеда они сидят за круглым столом с ограниченным количеством столовых приборов. В описании оригинальной задачи философы пользуются вилками, и, чтобы набрать спагетти из миски в центре стола, им требуются две вилки. Наверное, задача будет выглядеть более логично, если заменить вилки палочками для еды — очевидно, что каждому философу понадобятся две палочки.
Философы, как это часто бывает, очень бедны, и они смогли позволить себе приобрести лишь N палочек . Последние разложены кругом по столу, между философами. Когда философу захочется поесть, ему придется взять палочку слева и справа. Если один философ уже взял палочку, другому философу придется подождать .
В нашем случае одной палочкой для еды не могут одновременно есть два философа.
Философ должен сохранять при себе палочку, если у него получилось ее взять, и ожидать другую.
Наши философы вежливы и не станут выхватывать палочки друг у друга.
Ваша программа должна эмулировать этот процесс и приводить к дедлоку.
Массив
Создать массив на N элементов и заполнить его случайными числами. Далее создать 4 потока, которые должны посчитать сумму 1/4 части массива. Каждый из этих 4 потоков (главных) создает 3, которые непосредственно занимаются суммированием, а главный поток лишь считает сумму у этих трех. После окончания 4 главных потоков main-thread должен выдать общую сумму.
В данном задании запрещается пользоваться библиотекой java.util.concurrent