<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sr">
	<id>https://siwiki.rs/w/index.php?action=history&amp;feed=atom&amp;title=%D0%9A%D0%94%D0%9F%2F%D0%9B%D0%B0%D0%B1_1_2024</id>
	<title>КДП/Лаб 1 2024 - Историја измена</title>
	<link rel="self" type="application/atom+xml" href="https://siwiki.rs/w/index.php?action=history&amp;feed=atom&amp;title=%D0%9A%D0%94%D0%9F%2F%D0%9B%D0%B0%D0%B1_1_2024"/>
	<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%9B%D0%B0%D0%B1_1_2024&amp;action=history"/>
	<updated>2026-06-04T09:47:44Z</updated>
	<subtitle>Историја измена ове странице на пројекту</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%9B%D0%B0%D0%B1_1_2024&amp;diff=8380&amp;oldid=prev</id>
		<title>Ralepop: /* Решење за Atomic Broadcast */</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%9B%D0%B0%D0%B1_1_2024&amp;diff=8380&amp;oldid=prev"/>
		<updated>2026-06-03T21:05:14Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Решење за Atomic Broadcast&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Старија измена&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Верзија на датум 3. јун 2026. у 23:05&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l240&quot;&gt;Ред 240:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ред 240:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		for (int i = 0; i &amp;lt; b; i++)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		for (int i = 0; i &amp;lt; b; i++)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			for(int j=0;j&amp;lt;consumersCount;j++)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			for(int j=0;j&amp;lt;consumersCount;j++)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;				reads[i][j] = new AtomicInteger(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;1&lt;/del&gt;);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;				reads[i][j] = new AtomicInteger(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;0&lt;/ins&gt;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		for (int i = 0; i &amp;lt; consumersCount; i++) {&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		for (int i = 0; i &amp;lt; consumersCount; i++) {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l281&quot;&gt;Ред 281:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ред 281:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		for (int i = 0; i &amp;lt;b; i++) {&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		for (int i = 0; i &amp;lt;b; i++) {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			for (int j = 0; j &amp;lt; consumers; j++)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			for (int j = 0; j &amp;lt; consumers; j++)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;				while(reads[i][j].get() == &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;0&lt;/del&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;				while(reads[i][j].get() == &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;1&lt;/ins&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;					Thread.onSpinWait();&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;					Thread.onSpinWait();&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ralepop</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%9B%D0%B0%D0%B1_1_2024&amp;diff=8379&amp;oldid=prev</id>
		<title>Mf230002d: /* Решење за Child Care */</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%9B%D0%B0%D0%B1_1_2024&amp;diff=8379&amp;oldid=prev"/>
		<updated>2026-06-01T19:52:41Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Решење за Child Care&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Старија измена&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Верзија на датум 1. јун 2026. у 21:52&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l653&quot;&gt;Ред 653:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ред 653:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== Решење за Child Care ==&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Решење за Child Care ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Решење за Child Care ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Mf230002d</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%9B%D0%B0%D0%B1_1_2024&amp;diff=8378&amp;oldid=prev</id>
		<title>Mf230002d: /* Teacher.java */</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%9B%D0%B0%D0%B1_1_2024&amp;diff=8378&amp;oldid=prev"/>
		<updated>2026-06-01T19:38:20Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Teacher.java&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Старија измена&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Верзија на датум 1. јун 2026. у 21:38&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l766&quot;&gt;Ред 766:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ред 766:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== &amp;lt;code&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Teacher&lt;/del&gt;.java&amp;lt;/code&amp;gt; ====&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== &amp;lt;code&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Parent&lt;/ins&gt;.java&amp;lt;/code&amp;gt; ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Mf230002d</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%9B%D0%B0%D0%B1_1_2024&amp;diff=8377&amp;oldid=prev</id>
		<title>Mf230002d: /* Решење за Dining Philosophers */</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%9B%D0%B0%D0%B1_1_2024&amp;diff=8377&amp;oldid=prev"/>
		<updated>2026-06-01T19:37:48Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Решење за Dining Philosophers&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Старија измена&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Верзија на датум 1. јун 2026. у 21:37&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l654&quot;&gt;Ред 654:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ред 654:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Решење за Child Care ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Решење за Child Care ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Решење за &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Dining Philosophers &lt;/del&gt;==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Решење за &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Child Care &lt;/ins&gt;==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== &amp;lt;code&amp;gt;Test.java&amp;lt;/code&amp;gt; ====&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== &amp;lt;code&amp;gt;Test.java&amp;lt;/code&amp;gt; ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Mf230002d</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%9B%D0%B0%D0%B1_1_2024&amp;diff=8376&amp;oldid=prev</id>
		<title>Mf230002d: /* Решење за Child Care */</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%9B%D0%B0%D0%B1_1_2024&amp;diff=8376&amp;oldid=prev"/>
		<updated>2026-06-01T19:36:48Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Решење за Child Care&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;a href=&quot;https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%9B%D0%B0%D0%B1_1_2024&amp;amp;diff=8376&amp;amp;oldid=7623&quot;&gt;Прикажи измене&lt;/a&gt;</summary>
		<author><name>Mf230002d</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%9B%D0%B0%D0%B1_1_2024&amp;diff=7623&amp;oldid=prev</id>
		<title>DjoleRkc: /* Решење за Dining Philosophers */</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%9B%D0%B0%D0%B1_1_2024&amp;diff=7623&amp;oldid=prev"/>
		<updated>2024-05-03T11:39:55Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Решење за Dining Philosophers&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;a href=&quot;https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%9B%D0%B0%D0%B1_1_2024&amp;amp;diff=7623&amp;amp;oldid=7620&quot;&gt;Прикажи измене&lt;/a&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%9B%D0%B0%D0%B1_1_2024&amp;diff=7620&amp;oldid=prev</id>
		<title>DjoleRkc у 17:23, 1. мај 2024.</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%9B%D0%B0%D0%B1_1_2024&amp;diff=7620&amp;oldid=prev"/>
		<updated>2024-05-01T17:23:32Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Старија измена&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Верзија на датум 1. мај 2024. у 19:23&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Ред 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ред 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{tocright}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{tocright}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Прва лабораторијска вежба 2024. године&amp;#039;&amp;#039;&amp;#039; одржана је 29.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;4 &lt;/del&gt;i 30.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;4 &lt;/del&gt;и носила је 10 бодова (3 бода Moodle 7 бодова задатак). Укупно је било 4 групе.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Прва лабораторијска вежба 2024. године&amp;#039;&amp;#039;&amp;#039; одржана је 29. i 30. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;априла &lt;/ins&gt;и носила је 10 бодова (3 бода Moodle 7 бодова задатак). Укупно је било 4 групе.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Улазни тест Група 1 и 2 ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Улазни тест Група 1 и 2 ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%9B%D0%B0%D0%B1_1_2024&amp;diff=7617&amp;oldid=prev</id>
		<title>DjoleRkc: Нова страница: {{tocright}}  &#039;&#039;&#039;Прва лабораторијска вежба 2024. године&#039;&#039;&#039; одржана је 29.4 i 30.4 и носила је 10 бодова (3 бода Moodle 7 бодова задатак). Укупно је било 4 групе.   == Улазни тест Група 1 и 2 ==  === 1. задатак === Уколико нит А позове a(), а нит Б позове b(), шта ће се десити са нити Б?  &lt;syntaxhighlight lang…</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%9B%D0%B0%D0%B1_1_2024&amp;diff=7617&amp;oldid=prev"/>
		<updated>2024-05-01T16:06:14Z</updated>

		<summary type="html">&lt;p&gt;Нова страница: {{tocright}}  &amp;#039;&amp;#039;&amp;#039;Прва лабораторијска вежба 2024. године&amp;#039;&amp;#039;&amp;#039; одржана је 29.4 i 30.4 и носила је 10 бодова (3 бода Moodle 7 бодова задатак). Укупно је било 4 групе.   == Улазни тест Група 1 и 2 ==  === 1. задатак === Уколико нит А позове a(), а нит Б позове b(), шта ће се десити са нити Б?  &amp;lt;syntaxhighlight lang…&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Нова страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{tocright}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Прва лабораторијска вежба 2024. године&amp;#039;&amp;#039;&amp;#039; одржана је 29.4 i 30.4 и носила је 10 бодова (3 бода Moodle 7 бодова задатак). Укупно је било 4 групе. &lt;br /&gt;
&lt;br /&gt;
== Улазни тест Група 1 и 2 ==&lt;br /&gt;
&lt;br /&gt;
=== 1. задатак ===&lt;br /&gt;
Уколико нит А позове a(), а нит Б позове b(), шта ће се десити са нити Б?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class A {&lt;br /&gt;
	public synchronized void a() {&lt;br /&gt;
		//neki kod ...&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public synchronized void b() {&lt;br /&gt;
		//neki kod..&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	A obj = new A();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одговор: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;Зауставиће се док се не изврши a()&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. задатак ===&lt;br /&gt;
&lt;br /&gt;
Који од следећег су валидни начини да се иницијализује нит?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;Runnable r = new Runnable() {&lt;br /&gt;
	    public void run(){ /*neki kod*/ }&lt;br /&gt;
	};&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; class=&amp;quot;solution&amp;quot;&amp;gt;Runnable r = new Runnable() {&lt;br /&gt;
		public void run(){ /*neki kod*/}&lt;br /&gt;
	};&lt;br /&gt;
Thread t = new Thread(r);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; class=&amp;quot;solution&amp;quot;&amp;gt;Thread t = new Thread();&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; class=&amp;quot;solution&amp;quot;&amp;gt;public class Nit extends Thread {&lt;br /&gt;
	public void run(){ /*neki kod*/ }&lt;br /&gt;
}&lt;br /&gt;
Nit t = new Nit();&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; class=&amp;quot;solution&amp;quot;&amp;gt;Thread t = new Thread() {&lt;br /&gt;
	public void run(){ /*neki kod*/ }&lt;br /&gt;
};&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. задатак ===&lt;br /&gt;
&lt;br /&gt;
Прва нит извршава &amp;lt;code&amp;gt;readMethod()&amp;lt;/code&amp;gt; и закључала је &amp;lt;code&amp;gt;readLock&amp;lt;/code&amp;gt;. Друга нит је позвала &amp;lt;code&amp;gt;writeMethod()&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class LockExample {&lt;br /&gt;
    private static final ReentrantReadWriteLock rwLock = new ReentrantReadWriteLock();&lt;br /&gt;
&lt;br /&gt;
    public void readMethod() {&lt;br /&gt;
        rwLock.readLock().lock();&lt;br /&gt;
        try {&lt;br /&gt;
            // Neki kod...&lt;br /&gt;
        } finally {&lt;br /&gt;
            rwLock.readLock().unlock();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void writeMethod() {&lt;br /&gt;
        if (!rwLock.isWriteLocked()) {&lt;br /&gt;
            rwLock.writeLock().lock();&lt;br /&gt;
            try {&lt;br /&gt;
                // Neki kod..&lt;br /&gt;
            } finally {&lt;br /&gt;
                rwLock.writeLock().unlock();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Чему служи параметар у конструктору &amp;lt;code&amp;gt;ReentrantReadWriteLock&amp;lt;/code&amp;gt;?&lt;br /&gt;
Одговор: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;FIFO Fairness&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Шта се дешава са другом нити?&lt;br /&gt;
Одговор: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;Блокира се на &amp;lt;code&amp;gt;writeLock&amp;lt;/code&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Улазни тест Групe 3 ==&lt;br /&gt;
&lt;br /&gt;
=== 1. задатак ===&lt;br /&gt;
Када нит T увек трајно престаје да се извршава?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# Када нит позове wait над неким објектом.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Када се заврши њена run метода.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Када позове своју interrupt методу.&lt;br /&gt;
# Ниједан од понуђених одговора.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. задатак ===&lt;br /&gt;
&lt;br /&gt;
Који од наведених исказа су тачни?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;&amp;lt;code&amp;gt;ArrayBlockingQueue&amp;lt;/code&amp;gt; je pogodan za rešavanje ProducerConsumer problema.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Za implementaciju &amp;lt;code&amp;gt;ProducerConsumer&amp;lt;/code&amp;gt; problema, može se koristiti par metoda &amp;lt;code&amp;gt;add(E e) i remove()&amp;lt;/code&amp;gt; objekta tipa &amp;lt;code&amp;gt;BlockingQueue&amp;lt;/code&amp;gt;, bez dodatnih sinhronizacionih elemenata/direktiva.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt; Za implementaciju &amp;lt;code&amp;gt;ProducerConsumer&amp;lt;/code&amp;gt; problema, može se koristiti par metoda &amp;lt;code&amp;gt;putFirst(E e) i takeLast()&amp;lt;/code&amp;gt; objekta tipa &amp;lt;code&amp;gt;BlockingDeque&amp;lt;/code&amp;gt;, bez dodatnih sinhronizacionih elemenata/direktiva.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Za implementaciju &amp;lt;code&amp;gt;ProducerConsumer&amp;lt;/code&amp;gt; problema, može se koristiti par metoda &amp;lt;code&amp;gt;transfer(E e) i take()&amp;lt;/code&amp;gt; objekta tipa &amp;lt;code&amp;gt;TransferQueue&amp;lt;/code&amp;gt;, bez dodatnih sinhronizacionih elemenata/direktiva.&lt;br /&gt;
# Za implementaciju &amp;lt;code&amp;gt;ProducerConsumer&amp;lt;/code&amp;gt; problema, može se koristiti par metoda &amp;lt;code&amp;gt;putFirst(E e) i takeFirst()&amp;lt;/code&amp;gt; objekta tipa &amp;lt;code&amp;gt;BlockingDeque&amp;lt;/code&amp;gt;, bez dodatnih sinhronizacionih elemenata/direktiva.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. задатак ===&lt;br /&gt;
&lt;br /&gt;
Уколико нит threadA тренутно извршава методу обј.а(), а потом нит threadB позива методу обј.б(), који од понуђених одговора су тачни, уколико је дат следећи део кода?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class A {&lt;br /&gt;
  private ReentrantReadWriteLock rw = new ReentrantReadWriteLock(true);&lt;br /&gt;
&lt;br /&gt;
  public void a() {&lt;br /&gt;
    try {&lt;br /&gt;
      rw.readLock().lock();&lt;br /&gt;
      // kritična sekcija A...  // &amp;lt;- threadA&lt;br /&gt;
    } finally {&lt;br /&gt;
      rw.readLock().unlock();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public void b() {&lt;br /&gt;
    try {&lt;br /&gt;
      if (rw.getReadLockCount()==0) {&lt;br /&gt;
        rw.writeLock().lock();&lt;br /&gt;
      }&lt;br /&gt;
      // kritična sekcija B...&lt;br /&gt;
    } finally {&lt;br /&gt;
      rw.writeLock().unlock();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
A obj = new A();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt; Десиће се грешка приликом извршавања.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Аргумент конструктора ReentrantReadWriteLock означава да могу две нити истовремено да позивају закључавање.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Нити А и Б могу истовремено да извршавају критичне секције у методама a() и b() (респективно).&amp;lt;/span&amp;gt;&lt;br /&gt;
# Нит Б ће бити блокирана док нит А не заврши позив методе a().&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Аргумент конструктора ReentrantReadWriteLock означава да ли ће се буђење нити обављати по FIFO принципу.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Нит Б неће извршити закључавање, јер услов if-a није испуњен.&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Улазни тест Групe 4 ==&lt;br /&gt;
&lt;br /&gt;
=== 1. задатак ===&lt;br /&gt;
&lt;br /&gt;
Који од следећег су валидни начини да се иницијализује нит?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;Runnable r = new Runnable() {&lt;br /&gt;
	    public void run(){ /*neki kod*/ }&lt;br /&gt;
	};&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; class=&amp;quot;solution&amp;quot;&amp;gt;Runnable r = new Runnable() {&lt;br /&gt;
		public void run(){ /*neki kod*/}&lt;br /&gt;
	};&lt;br /&gt;
Thread t = new Thread(r);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; class=&amp;quot;solution&amp;quot;&amp;gt;Thread t = new Thread();&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; class=&amp;quot;solution&amp;quot;&amp;gt;public class Nit extends Thread {&lt;br /&gt;
	public void run(){ /*neki kod*/ }&lt;br /&gt;
}&lt;br /&gt;
Nit t = new Nit();&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; class=&amp;quot;solution&amp;quot;&amp;gt;Thread t = new Thread() {&lt;br /&gt;
	public void run(){ /*neki kod*/ }&lt;br /&gt;
};&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. задатак ===&lt;br /&gt;
&lt;br /&gt;
Који од наведених исказа су тачни?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;&amp;lt;code&amp;gt;ArrayBlockingQueue&amp;lt;/code&amp;gt; je pogodan za rešavanje ProducerConsumer problema.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Za implementaciju &amp;lt;code&amp;gt;ProducerConsumer&amp;lt;/code&amp;gt; problema, može se koristiti par metoda &amp;lt;code&amp;gt;add(E e) i remove()&amp;lt;/code&amp;gt; objekta tipa &amp;lt;code&amp;gt;BlockingQueue&amp;lt;/code&amp;gt;, bez dodatnih sinhronizacionih elemenata/direktiva.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt; Za implementaciju &amp;lt;code&amp;gt;ProducerConsumer&amp;lt;/code&amp;gt; problema, može se koristiti par metoda &amp;lt;code&amp;gt;putFirst(E e) i takeLast()&amp;lt;/code&amp;gt; objekta tipa &amp;lt;code&amp;gt;BlockingDeque&amp;lt;/code&amp;gt;, bez dodatnih sinhronizacionih elemenata/direktiva.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Za implementaciju &amp;lt;code&amp;gt;ProducerConsumer&amp;lt;/code&amp;gt; problema, može se koristiti par metoda &amp;lt;code&amp;gt;transfer(E e) i take()&amp;lt;/code&amp;gt; objekta tipa &amp;lt;code&amp;gt;TransferQueue&amp;lt;/code&amp;gt;, bez dodatnih sinhronizacionih elemenata/direktiva.&lt;br /&gt;
# Za implementaciju &amp;lt;code&amp;gt;ProducerConsumer&amp;lt;/code&amp;gt; problema, može se koristiti par metoda &amp;lt;code&amp;gt;putFirst(E e) i takeFirst()&amp;lt;/code&amp;gt; objekta tipa &amp;lt;code&amp;gt;BlockingDeque&amp;lt;/code&amp;gt;, bez dodatnih sinhronizacionih elemenata/direktiva.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. задатак ===&lt;br /&gt;
&lt;br /&gt;
Како правилно осигурати међусобно искључивање критичне секције?&lt;br /&gt;
&lt;br /&gt;
{{delimično rešeno}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Поставка Свих Група==&lt;br /&gt;
&lt;br /&gt;
У зависности од групе било је потребно решити један од следећих проблема:&lt;br /&gt;
&lt;br /&gt;
1. Решити &amp;lt;code&amp;gt;Atomic Broadcast&amp;lt;/code&amp;gt; проблем користећи &amp;lt;code&amp;gt;AtomicInteger&amp;lt;/code&amp;gt; и опционо &amp;lt;code&amp;gt;Semaphore&amp;lt;/code&amp;gt; . Бафер садржи B елемената. Потребно је да програм буде максимално конкурентан и отпоран на прекиде.&lt;br /&gt;
&lt;br /&gt;
2. Решити &amp;lt;code&amp;gt;H2O&amp;lt;/code&amp;gt; проблем користећи &amp;lt;code&amp;gt;CyclicBarrier&amp;lt;/code&amp;gt;. Потребно је да програм буде максимално конкурентан и отпоран на прекиде.&lt;br /&gt;
&lt;br /&gt;
3. Решити &amp;lt;code&amp;gt;Dining Philosophers&amp;lt;/code&amp;gt; проблем користећи &amp;lt;code&amp;gt;AtomicInteger&amp;lt;/code&amp;gt; и регионе. филозофи који су раније изразили жељу за храном треба раније да буду опслужени . Потребно је да програм буде максимално конкурентан и отпоран на прекиде.&lt;br /&gt;
&lt;br /&gt;
4. Решити &amp;lt;code&amp;gt;Child Care&amp;lt;/code&amp;gt; проблем користећи &amp;lt;code&amp;gt;ConcurrentLinkedQueue&amp;lt;/code&amp;gt; и друге произвољне синхронизационе директиве. Родитељ доводи једно или више деце у обданиште и чека све док се не појави место, како би оставио сву децу одједном и отишао. Родитељ може и да одведе једно или више деце, такође одједном. Мора се поштовати редослед доласка родитеља који остављају децу и васпитачица које одлазе са посла. Потребно је да програм буде максимално конкурентан и отпоран на прекиде.&lt;br /&gt;
&lt;br /&gt;
== Решење за Atomic Broadcast ==&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;Test.java&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
package rs.ac.bg.etf.kdp.lab12024G1;&lt;br /&gt;
&lt;br /&gt;
import java.util.concurrent.Semaphore;&lt;br /&gt;
import java.util.concurrent.atomic.AtomicInteger;&lt;br /&gt;
&lt;br /&gt;
public class Test {&lt;br /&gt;
&lt;br /&gt;
	private static final int consumersCount=3;&lt;br /&gt;
	private static final int b=5;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
&lt;br /&gt;
		AtomicInteger[][] reads = new AtomicInteger[b][consumersCount];&lt;br /&gt;
&lt;br /&gt;
		Semaphore mutex = new Semaphore(1);&lt;br /&gt;
&lt;br /&gt;
		AtomicInteger[] buffer = new AtomicInteger[b];&lt;br /&gt;
&lt;br /&gt;
		for (int i = 0; i &amp;lt; buffer.length; i++)&lt;br /&gt;
			buffer[i] = new AtomicInteger(0);&lt;br /&gt;
&lt;br /&gt;
		Consumer[] consumers = new Consumer[consumersCount];&lt;br /&gt;
&lt;br /&gt;
		Producer p = new Producer(consumersCount, buffer, reads,b,mutex);&lt;br /&gt;
		p.start();&lt;br /&gt;
&lt;br /&gt;
		for (int i = 0; i &amp;lt; b; i++)&lt;br /&gt;
			for(int j=0;j&amp;lt;consumersCount;j++)&lt;br /&gt;
				reads[i][j] = new AtomicInteger(1);&lt;br /&gt;
&lt;br /&gt;
		for (int i = 0; i &amp;lt; consumersCount; i++) {&lt;br /&gt;
			consumers[i] = new Consumer(buffer, reads,b,mutex,i);&lt;br /&gt;
			consumers[i].start();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;Producer.java&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
package rs.ac.bg.etf.kdp.lab12024G1;&lt;br /&gt;
&lt;br /&gt;
import java.util.concurrent.Semaphore;&lt;br /&gt;
import java.util.concurrent.atomic.AtomicInteger;&lt;br /&gt;
&lt;br /&gt;
public class Producer extends Thread {&lt;br /&gt;
&lt;br /&gt;
	private final int consumers;&lt;br /&gt;
	private AtomicInteger[] buffer;&lt;br /&gt;
	private AtomicInteger[][] reads;&lt;br /&gt;
	private Semaphore mutex;&lt;br /&gt;
	private int b;&lt;br /&gt;
&lt;br /&gt;
	public Producer(int consumers, AtomicInteger[] buffer, AtomicInteger[][] reads, int bb, Semaphore mutex) {&lt;br /&gt;
		this.consumers = consumers;&lt;br /&gt;
		this.buffer = buffer;&lt;br /&gt;
		this.reads = reads;&lt;br /&gt;
		b=bb;&lt;br /&gt;
		this.mutex = mutex;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void run() {&lt;br /&gt;
		for (int i = 0; i &amp;lt;b; i++) {&lt;br /&gt;
			for (int j = 0; j &amp;lt; consumers; j++)&lt;br /&gt;
				while(reads[i][j].get() == 0)&lt;br /&gt;
					Thread.onSpinWait();&lt;br /&gt;
&lt;br /&gt;
			int rand = (int)(Math.random() * 10);&lt;br /&gt;
			System.out.println(&amp;quot;Producer produced element: &amp;quot; + rand );&lt;br /&gt;
			mutex.acquireUninterruptibly();&lt;br /&gt;
			buffer[i].set(rand);&lt;br /&gt;
			mutex.release();&lt;br /&gt;
&lt;br /&gt;
			mutex.acquireUninterruptibly();&lt;br /&gt;
			for (int j2 = 0; j2 &amp;lt; consumers; j2++)&lt;br /&gt;
				reads[i][j2].set(0);&lt;br /&gt;
&lt;br /&gt;
			mutex.release();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;Consumer.java&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
package rs.ac.bg.etf.kdp.lab12024G1;&lt;br /&gt;
&lt;br /&gt;
import java.util.concurrent.Semaphore;&lt;br /&gt;
import java.util.concurrent.atomic.AtomicInteger;&lt;br /&gt;
&lt;br /&gt;
public class Consumer extends Thread {&lt;br /&gt;
&lt;br /&gt;
	private int id;&lt;br /&gt;
	private AtomicInteger[][] reads;&lt;br /&gt;
	private AtomicInteger[] buffer;&lt;br /&gt;
	private Semaphore mutex;&lt;br /&gt;
	private int b;&lt;br /&gt;
&lt;br /&gt;
	public Consumer(AtomicInteger[] buff, AtomicInteger[][] r, int bb,Semaphore mutex, int i) {&lt;br /&gt;
		buffer = buff;&lt;br /&gt;
		reads=r;&lt;br /&gt;
		id=i;&lt;br /&gt;
		this.mutex = mutex;&lt;br /&gt;
		b=bb;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void run() {&lt;br /&gt;
		for (int i = 0; i &amp;lt; b; i++) {&lt;br /&gt;
			while(reads[i][id].get() == 1)&lt;br /&gt;
				Thread.onSpinWait();&lt;br /&gt;
			mutex.acquireUninterruptibly();&lt;br /&gt;
			int elem = buffer[i].get();&lt;br /&gt;
			System.out.println(&amp;quot;Consumer &amp;quot;+id+&amp;quot; consumed element &amp;quot;+elem +&amp;quot;from place &amp;quot;+i);&lt;br /&gt;
			reads[i][id].set(1);&lt;br /&gt;
			mutex.release();&lt;br /&gt;
&lt;br /&gt;
			try {&lt;br /&gt;
				sleep((int)(Math.random()*2000));&lt;br /&gt;
			} catch (InterruptedException e) {&lt;br /&gt;
				throw new RuntimeException(e);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Решење за H2O ==&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;Test.java&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package H20;&lt;br /&gt;
&lt;br /&gt;
import java.util.concurrent.CyclicBarrier;&lt;br /&gt;
import java.util.concurrent.atomic.AtomicInteger;&lt;br /&gt;
&lt;br /&gt;
public class Test {&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		int cnt = 10;&lt;br /&gt;
		&lt;br /&gt;
		Barrier barrier = new Barrier(new CyclicBarrier(3));&lt;br /&gt;
		&lt;br /&gt;
		Hydrogen[] h = new Hydrogen[cnt*2];&lt;br /&gt;
		Oxygen[] o = new Oxygen[cnt];&lt;br /&gt;
		&lt;br /&gt;
		for(int i = 0; i &amp;lt; cnt; i++) {&lt;br /&gt;
			o[i] = new Oxygen(barrier);&lt;br /&gt;
			h[2*i] = new Hydrogen(barrier);	&lt;br /&gt;
			h[2*i + 1] = new Hydrogen(barrier);	&lt;br /&gt;
			&lt;br /&gt;
			o[i].start();&lt;br /&gt;
			h[2*i].start();&lt;br /&gt;
			h[2*i+1].start();&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==== &amp;lt;code&amp;gt;Oxygen.java&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package H20;&lt;br /&gt;
&lt;br /&gt;
import java.util.concurrent.BrokenBarrierException;&lt;br /&gt;
import java.util.concurrent.Semaphore;&lt;br /&gt;
&lt;br /&gt;
public class Oxygen extends Thread {&lt;br /&gt;
	&lt;br /&gt;
	Barrier barrier;&lt;br /&gt;
	&lt;br /&gt;
	Oxygen(Barrier b){&lt;br /&gt;
		barrier = b;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	@Override&lt;br /&gt;
	public void run() {&lt;br /&gt;
		while(true) {&lt;br /&gt;
			try {&lt;br /&gt;
				Thread.sleep((int)(Math.random() * 4000));&lt;br /&gt;
			} catch (InterruptedException e) {}&lt;br /&gt;
			&lt;br /&gt;
			&lt;br /&gt;
			barrier.oxygen.acquireUninterruptibly();&lt;br /&gt;
&lt;br /&gt;
			barrier.oCount++;&lt;br /&gt;
			&lt;br /&gt;
			try {&lt;br /&gt;
				System.out.println(&amp;quot;Kiseonik pristigao na barijeru&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
				if(barrier.barrier.await() == 0) {&lt;br /&gt;
					System.out.println(&amp;quot;\nFORMIRANJE VODE!\n&amp;quot;);&lt;br /&gt;
					&lt;br /&gt;
					barrier.hCount = 0;&lt;br /&gt;
					barrier.oCount = 1;&lt;br /&gt;
					&lt;br /&gt;
					barrier.hydrogen.release(2);&lt;br /&gt;
					barrier.oxygen.release(1);&lt;br /&gt;
				}&lt;br /&gt;
				&lt;br /&gt;
			} catch (InterruptedException | BrokenBarrierException e) {&lt;br /&gt;
				e.printStackTrace();&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;Hydrogen.java&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package H20;&lt;br /&gt;
&lt;br /&gt;
import java.util.concurrent.BrokenBarrierException;&lt;br /&gt;
import java.util.concurrent.Semaphore;&lt;br /&gt;
&lt;br /&gt;
public class Hydrogen extends Thread {&lt;br /&gt;
	&lt;br /&gt;
	Barrier barrier;&lt;br /&gt;
	&lt;br /&gt;
	Hydrogen(Barrier b){&lt;br /&gt;
		barrier = b;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	@Override&lt;br /&gt;
	public void run() {&lt;br /&gt;
		while(true) {&lt;br /&gt;
			try {&lt;br /&gt;
				Thread.sleep((int)(Math.random() * 4000));&lt;br /&gt;
			} catch (InterruptedException e) {}&lt;br /&gt;
			&lt;br /&gt;
			barrier.hydrogen.acquireUninterruptibly();&lt;br /&gt;
&lt;br /&gt;
			barrier.hCount++;&lt;br /&gt;
			&lt;br /&gt;
			try {&lt;br /&gt;
				System.out.println(&amp;quot;Vodonik pristigao na barijeru&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
				if(barrier.barrier.await() == 0) {&lt;br /&gt;
					System.out.println(&amp;quot;\nFORMIRANJE VODE!\n&amp;quot;);&lt;br /&gt;
					barrier.hCount = 0;&lt;br /&gt;
					barrier.oCount = 1;&lt;br /&gt;
					&lt;br /&gt;
					barrier.hydrogen.release(2);&lt;br /&gt;
					barrier.oxygen.release(1);&lt;br /&gt;
				}&lt;br /&gt;
				&lt;br /&gt;
			} catch (InterruptedException | BrokenBarrierException e) {&lt;br /&gt;
				e.printStackTrace();&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;Barrier.java&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package H20;&lt;br /&gt;
&lt;br /&gt;
import java.util.concurrent.CyclicBarrier;&lt;br /&gt;
import java.util.concurrent.Semaphore;&lt;br /&gt;
&lt;br /&gt;
public class Barrier {&lt;br /&gt;
	CyclicBarrier barrier;&lt;br /&gt;
	Semaphore hydrogen, oxygen;&lt;br /&gt;
	int hCount, oCount;&lt;br /&gt;
	&lt;br /&gt;
	Barrier(CyclicBarrier cb){&lt;br /&gt;
		barrier = cb;&lt;br /&gt;
		hCount = 0;&lt;br /&gt;
		oCount = 0;&lt;br /&gt;
		hydrogen = new Semaphore(2);&lt;br /&gt;
		oxygen = new Semaphore(1);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Решење за Dining Philosophers ==&lt;br /&gt;
&lt;br /&gt;
{{delimično rešeno}}&lt;br /&gt;
&lt;br /&gt;
== Решење за Child Care ==&lt;br /&gt;
&lt;br /&gt;
{{delimično rešeno}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категорија:КДП]]&lt;br /&gt;
[[Категорија:Лабораторијске вежбе]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
</feed>