Java 2012-04-04 — различия между версиями

Материал из SEWiki
Перейти к: навигация, поиск
(Новая страница: «== Что почитать == [http://topcode.ru/2010/04/09/potoki-v-java/ часть 1] [http://topcode.ru/2010/04/14/potoki-v-java-chast-2/ часть 2] [http:…»)
 
(Что почитать)
 
Строка 6: Строка 6:
  
 
[http://topcode.ru/2010/04/26/potoki-v-java-chast-3/ часть 3]
 
[http://topcode.ru/2010/04/26/potoki-v-java-chast-3/ часть 3]
 
  
 
[http://ru.wikipedia.org/wiki/Double_checked_locking Про двойную проверку]
 
[http://ru.wikipedia.org/wiki/Double_checked_locking Про двойную проверку]

Текущая версия на 11:32, 4 апреля 2012

Что почитать

часть 1

часть 2

часть 3

Про двойную проверку

Задачи

Философы

В стандартной формулировке говорится о пяти философах, но, мы будем считать, что их N. Часть времени философы проводят размышляя, часть времени проводят за едой. Когда они размышляют, то не нуждаются в общих ресурсах, но во время обеда они сидят за круглым столом с ограниченным количеством столовых приборов. В описании оригинальной задачи философы пользуются вилками, и, чтобы набрать спагетти из миски в центре стола, им требуются две вилки. Наверное, задача будет выглядеть более логично, если заменить вилки палочками для еды — очевидно, что каждому философу понадобятся две палочки.

Философы, как это часто бывает, очень бедны, и они смогли позволить себе приобрести лишь пять палочек . Последние разложены кругом по столу, между философами. Когда философу захочется поесть, ему придется взять палочку слева и справа. Если один философ уже взял палочку, другому философу придется подождать .

В нашем случае одной палочкой для еды не могут одновременно есть два философа.

Философ должен сохранять при себе палочку, если у него получилось ее взять, и ожидать другую.

Наши философы вежливы и не станут выхватывать палочки друг у друга.

Массив

Создать массив на N элементов и заполнить его случайными числами. Далее создать 4 потока, которые должны посчитать сумму 1/4 части массива. Каждый из этих 4 потоков (главных) создает 3, которые непосредственно занимаются суммированием, а главный поток лишь считает сумму у этих трех.