<?xml version="1.0" encoding="windows-1250" ?>
<rss version="2.0">
<channel>
<docs>https://www.mycity.rs/Obavestenja/MyCity-RSS-feeds.html</docs>
<title>MyCity :: Java</title>
<link>https://www.mycity.rs/Java/</link>
<description>RSS feed 'Java' foruma</description>
<language>sr</language>
<ttl>15</ttl>
<lastBuildDate>Sun, 15 Mar 2026 15:04:42 +0100</lastBuildDate>
<item>
	<title>Konkurentno i distribuirano programiranje u Javi</title>
	<link>https://www.mycity.rs/Java/Konkurentno-i-distribuirano-programiranje-u-Javi-2.html</link>
	<guid>https://www.mycity.rs/?p=1453719</guid>
	<author>nobody@mycity.rs (Mila_90)</author>
	<description>&lt;span style=&quot;font-weight: bold&quot;&gt;Osnove konkurentnog i distribuiranog programiranja u Javi&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Pored nezaobilazne preporučene literature iz konkurentnog i distribuiranog programiranja:
&lt;br /&gt;
&lt;span class=&quot;ulist2&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;
&lt;br /&gt;
1. The Little Book of Semaphores, Allen B. Downey
&lt;br /&gt;
2. Taming Java Threads, Allen Holub
&lt;br /&gt;
3. Foundation of Multithreaded, Parallel and Distributed Programming, Gregory Andrews, Addison Wesley,2000
&lt;br /&gt;
4. Konkurentno i distribuirano programiranje, Zaharije Radivojević, Igor Ikodinović, Zoran Jovanović, Akademska misao, 2008
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
korisno je pogledati sledeće video snimke sa praktičnih vežbi dr Zaharija Radivojevića, na Elektrotehničkom fakultetu Univerziteta u Beogradu. 
&lt;br /&gt;

&lt;br /&gt;
Obrađene su sledeće oblasti:
&lt;br /&gt;
&lt;span class=&quot;ulist2&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;
&lt;br /&gt;
1. Sinhronizacija niti
&lt;br /&gt;
2. Distribuirano programiranje pomoću soketa
&lt;br /&gt;
3. Udaljeni pozivi metoda (RMI)
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
 &lt;iframe class=&quot;youtube&quot; width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/HvTObkCRoPA&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;br /&gt;

&lt;br /&gt;
Sa prvog snimka se može naučiti sledeće:
&lt;br /&gt;
&lt;span class=&quot;ulist2&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;
&lt;br /&gt;
1. Osnove rada u razvojnom okruženju Eclipse
&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; border=&quot;0&quot; /&gt; Download
&lt;br /&gt;

&lt;br /&gt;
2. Koncept poštanskog sandučeta (Message Box)
&lt;br /&gt;

&lt;br /&gt;
3. Izrada jednostavnog GUI-ja (pomoću Java Swing)&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;
&lt;br /&gt;
- Komponente JButton, JTextArea, JWindow
&lt;br /&gt;
- Koncept Event-a (događaja) i Action listener-a.
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
4. Ponavljanje osnova programskog jezika Java &lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;
&lt;br /&gt;
- paketi
&lt;br /&gt;
- metode
&lt;br /&gt;
- prosleđivanje argumenata
&lt;br /&gt;
- definicija promenljivih
&lt;br /&gt;
- klase
&lt;br /&gt;
- interfejsi
&lt;br /&gt;
- konstante
&lt;br /&gt;
- gotove klase za rad sa listom i drugim strukturama podataka
&lt;br /&gt;
- izuzeci
&lt;br /&gt;
- događaji
&lt;br /&gt;
- generičke klase
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
5. Koncept bounded buffer-a (kružnog bafera)
&lt;br /&gt;

&lt;br /&gt;
6. Sinhronizacija niti i rada poštanskog sandučeta pomoću interfejsa Lock i njegove implementacije ReentrantLock
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
 &lt;iframe class=&quot;youtube&quot; width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/7wKrrRsWSl8&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Na drugom snimku se može videti:
&lt;br /&gt;
&lt;span class=&quot;ulist2&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;
&lt;br /&gt;
1. Debagovanje u razvojnom okruženju Eclipse
&lt;br /&gt;
2. Demonstracija i ispravljanje najčešćih grešaka u sinhronizaciji i GUI-ju
&lt;br /&gt;
3. Implementacija poštanskog sandučeta  koristeći ključnu reč synchronized
&lt;br /&gt;
4. Implementacija poštanskog sandučeta  koristeći nizove i semafore u Javi (u java.util.concurrent paketu)
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
 &lt;iframe class=&quot;youtube&quot; width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/HEkL4wjd758&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;br /&gt;

&lt;br /&gt;
Treći snimak:
&lt;br /&gt;
&lt;span class=&quot;ulist2&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;
&lt;br /&gt;
1. Upoređivanje performansi prethodnih implementacija poštanskog sandučeta
&lt;br /&gt;
2. Tokovi podataka u programskom jeziku Java
&lt;br /&gt;
3. Implementacija poštanskog sandučetu u distribuiranom okruženju pomoću soketa
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
 &lt;iframe class=&quot;youtube&quot; width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/ZRMTJ5mD4I8&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;br /&gt;

&lt;br /&gt;
Četvrti snimak:
&lt;br /&gt;
&lt;span class=&quot;ulist2&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;
&lt;br /&gt;
1. Implementacija poštanskog sandučeta pomoću udaljenih poziva metoda (RMI u Javi)
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Svaka ispravka, bilo stručna, bilo u vezi izgleda teme je dobrodošla  &lt;img src=&quot;https://www.mycity.rs/images/smiles/smajli.gif&quot; alt=&quot;smešak&quot; border=&quot;0&quot; /&gt; 
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
----------- &lt;span style=&quot;font-weight: bold&quot;&gt;Dopuna: 09 Dec 2012 21:34&lt;/span&gt; ---------
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
 &lt;span style=&quot;color: blue&quot;&gt;&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;Sinhronizacija niti pomoću ključne reči synchronized, metoda wait i notify&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Deo koda ili metod se mogu deklarisati kao kritična sekcija korišćenjem ključne reči synchronized. 
&lt;br /&gt;

&lt;br /&gt;
1. &lt;span style=&quot;color: blue&quot;&gt;Deo koda&lt;/span&gt;
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;synchronized &amp;#40;someObject&amp;#41; &amp;#123; ... &amp;#125;&lt;/code&gt;
&lt;br /&gt;
U ovom slučaju, deo koda je kritična sekcija, a objekat odgovara uslovnom kritičnom regionu. 
&lt;br /&gt;

&lt;br /&gt;
2. &lt;span style=&quot;color: blue&quot;&gt;Metod&lt;/span&gt;
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;public class SomeClass &amp;#123;
&lt;br /&gt;
public synchronized void f&amp;#40;...&amp;#41; &amp;#123;
&lt;br /&gt;
...
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;Deo koda je kritična sekcija, a objekat odgovara monitorima sa signal and continue disciplinom.
&lt;br /&gt;

&lt;br /&gt;
3. &lt;span style=&quot;color: blue&quot;&gt;Naredba wait()&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Naredba wait prekida izvršavanje niti i stavlja je u stanje čekanja. Privremeno se skida zabrana drugim nitima koje pristupaju monitoru. 
&lt;br /&gt;

&lt;br /&gt;
wait(tmilisec) Čeka se najviše tmilisec milisekundi dok neka druga nit ne pozove notify() ili notifyAll() za taj objekat.
&lt;br /&gt;

&lt;br /&gt;
wait(tmilisec,tnanosec) Čeka se najviše tmilisec milisekundi i tnanosec nanosekundi dok neka druga nit ne pozove notify() ili notifyAll() za taj objekat.
&lt;br /&gt;

&lt;br /&gt;
wait() Čeka neograničeno dok neka druga nit ne pozove notify() ili notifyAll() za taj objekat.
&lt;br /&gt;

&lt;br /&gt;
4.&lt;span style=&quot;color: blue&quot;&gt;Naredba notify()&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Naredba notify&amp;#1040;ll()  šalje notifikaciju svim nitima koje čekaju da pristupe ciljnom objektu da to mogu učiniti. 
&lt;br /&gt;
Naredba notify()  radi isto što i  notify&amp;#1040;ll(), ali notifikuje samo jednu nit.
&lt;br /&gt;

&lt;br /&gt;
Demonstriraćemo upotrebu ključne reči synchronized i pomenutih metoda u sinhronizaciji niti na primeru poštanskog sandučeta iz uvodnog dela članka.
&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;public class ArrayMessageBox&amp;lt;T&amp;gt; implements MessageBox&amp;lt;T&amp;gt; &amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;Object&amp;#91;&amp;#93; buffer;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;int first, last, size;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;public ArrayMessageBox&amp;#40;int num&amp;#41; &amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;buffer = new Object&amp;#91;num&amp;#93;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;first = 0;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;last = 0;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;size = 0;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;public synchronized Message&amp;lt;T&amp;gt; get&amp;#40;long ttw, Status status&amp;#41; &amp;#123; //čitav metod je synchronized
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;while &amp;#40;size == 0&amp;#41; &amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;try &amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;wait&amp;#40;&amp;#41;; //Čeka se da nešto ima u baferu.
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#125; catch &amp;#40;InterruptedException e&amp;#41; &amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;e.printStackTrace&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Message&amp;lt;T&amp;gt; result = &amp;#40;Message&amp;lt;T&amp;gt;&amp;#41; buffer&amp;#91;first&amp;#93;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;first = &amp;#40;first + 1&amp;#41; % buffer.length;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;size--;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;notifyAll&amp;#40;&amp;#41;;// Sve niti se obaveštavaju da je nešto uzeto iz bafera - to će probuditi proizvođače koji čekaju slobodno mesto u baferu.
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;return result;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;public synchronized void send&amp;#40;Message&amp;lt;T&amp;gt; m, Priority p, long ttl&amp;#41; &amp;#123; //čitav metod je synchronized
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;while &amp;#40;size == buffer.length&amp;#41; &amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;try &amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;wait&amp;#40;&amp;#41;; //Čeka se da ima barem jedno slobodno mesto u baferu. 
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#125; catch &amp;#40;InterruptedException e&amp;#41; &amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;e.printStackTrace&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;buffer&amp;#91;last&amp;#93; = m;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;last = &amp;#40;last + 1&amp;#41; % buffer.length;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;size++;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;notifyAll&amp;#40;&amp;#41;; //Sve niti se obaveštavaju da je nešto ubačeno u bafer - to će probuditi one potrošače koji čekaju da uzmu nešto iz bafera.
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
&amp;#125;&lt;/code&gt;</description>
	<pubDate>Sun, 09 Dec 2012 21:33:48 +0100</pubDate>
</item>
<item>
	<title>Java Developers Almanac</title>
	<link>https://www.mycity.rs/Java/Java-Developers-Almanac.html</link>
	<guid>https://www.mycity.rs/?p=338982</guid>
	<author>nobody@mycity.rs (snoop)</author>
	<description>Uplivah ja i u Javine vode &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;</description>
	<pubDate>Mon, 17 Apr 2006 01:45:24 +0100</pubDate>
</item>
</channel>
</rss>

