Категория ‘ПИК3 Java’
* Consumer-Producer – двустранна синхронизация с много консуматори и много производители
Публикувано на 29 ноември 2013 в раздел ПИК3 Java.
В предишните примери се забеляза нещо много неприятно - кодът се обърква все повече и повече. Причината за това е, че при множество играчи, не само производителя трябва да уведомява консуматора и обратно, а и самите консуматори и самите производители трябва да се синхронизират помежду си. Поради тази причина ще е по-добре ако оптимизираме идеята за централно синхронизиране на всички чрез "чинията".
В този пример има споделен ресурс – чиния с храна. За нея има ограничение какво количество храна ще поеме - максимум 10 единици (по този начин усложняваме задачата, защото хората трябва да се изчакват!). Кучетата ще нападат чинията в произволен ред. Ако в нея няма храна, кучето се отдръпва, за да даде възможност на човек да добави храна (има continue в цикъла на run метода). Същото вършат и хората - те сготвят храната и гледат купичката. Ако тя е пълна, те се отдръпват и чакат. Поддържат се броячи за броя на активните кучета и активните готвачи. Ако готвачите станат повече от кучетата, някой от готвачите ще спира работата си. Прочети още...
* Consumer-Producer – едностранна синхронизация с много консуматори и един производител
Публикувано на 29 ноември 2013 в раздел ПИК3 Java.
В този пример има споделен ресурс – чиния с храна. За нея няма ограничение какво количество храна ще поеме, затова producer (в случая Human) ще я пълни още и още независимо дали е пълна или празна. Кучетата ще се редят едно след друго и ще чакат да се напълни чинията. Използва се централен mutex, с който кучето заявява пред човека, че търси "събуждане" (notify). Това се прави, за да се предотврати race condition, в който две кучета са събудени последователно и второто изяжда съдържанието на празна чиния (първото е изяло всичко, а човекът все още не е успял да сготви ново ястие). Освен това чинията вече е направена като обект, за да може да се синхронизира по него. По този начин се избягва race condition, при който човекът сготвя ястия в периода между пълненето на стомаха на кучето и нулирането на съдържанието на чинията. Прочети още...
* Consumer-Producer – двустранна синхронизация с един консуматор и един производител
Публикувано на 28 ноември 2013 в раздел ПИК3 Java.
В този пример има споделен ресурс – чиния с храна. За нея има ограничение какво количество храна ще поеме, затова producer (в случая Human) ще гледа дали в чинията има храна или няма. Ако има, той трябва да изчака кучето да се наяде. Ако няма, той ще сложи сготвеното в купичката. Кучето, което яде от чинията, от своя страна също ще гледа дали в купата има храна или не. Ако има храна, то ще я изяде. Ако няма, то ще изчака човека да го повика. Прочети още...
* Consumer-Producer – едностранна синхронизация с един консуматор и един производител
Публикувано на 28 ноември 2013 в раздел ПИК3 Java.
В този пример има споделен ресурс - чиния с храна. За нея няма ограничение какво количество храна ще поеме, затова producer (в случая Human) ще я пълни независимо дали е пълна или празна. Кучето, което яде от чинията, от своя страна ще гледа дали в купата има храна или не. Ако има храна, то ще я изяде. Ако няма, то ще изчака човека да го повика. Прочети още...
* Контролна работа 23.11.2013
Публикувано на 23 ноември 2013 в раздел ПИК3 Java.
В електронна игра има три вида герои – войни (warriors), стрелци (archers) и варвари (barbarians). Всеки от тях разполага с две основни сили: атака (attack) и защита (defence) – и двете цели числа (тип byte) – както и определено количество живот (health), отново цяло число (тип byte), което първоначално винаги заема максималната си стойност 127. Прочети още...
* Решение на вариант 1 от изпит 14.01.2013г.
Публикувано на 20 януари 2013 в раздел ПИК3 Java.
Тук ще дам едно възможно (не много прегледно написано) решение на вариант 1 от задачата за изпит. Условието гласеше следното: Прочети още...
* Въведение в Swing – рамки, бутони и менюта
Публикувано на 08 януари 2013 в раздел ПИК3 Java.
Swing е набор от пакети за изграждане на програми с графична среда на Java. Самият Swing е написан на езика Java, т.е. той е платформено независим. Част е от т.нар. "Java Foundation Classes". Ще демонстрираме работата със Swing чрез няколко елементарни примера.
1. JFrame
JFrame е основният "контейнер", който се използва, за да разполагаме други обекти в него. Можете да го приемете като празна рамка, в която ще се поставят други контроли. Характеризира се със заглавие (title) и размери (в пиксели). Следният код демонстрира създаването на една празна рамка: Прочети още...
* Четири нововъведения от Java 7
Публикувано на 21 ноември 2011 в раздел ПИК3 Java.
В един от последните примери, които пуснах в сайта, получих уместен коментар, в който се каза, че "Eclipse иска int или enum, a ние подаваме String" при използване на оператор "switch". Объркването се получава поради това, че подаването на String към оператор switch е едно от нововъведенията в Java 7!
Естествено нововъведенията са много повече, но на този етап ще акцентирам върху четири от основните: Прочети още...
* Задача от упражнение 5, 2011г.
Публикувано на 13 ноември 2011 в раздел ПИК3 Java.
* Задача от упражнение 3, 2011г.
Публикувано на 08 ноември 2011 в раздел ПИК3 Java.
Задача 1: Съставете клас за работа с комплексни числа. Да се съставят методи реализиращи операциите сбор, разлика, умножение и деление на комплексни числа. Реализирайте методи за отпечатване на комплексното число и за връщане на комплесно спрегнатото число.
Примерно решение: Прочети още...