java:synchronized_methods_blocks
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
java:synchronized_methods_blocks [2017/03/18 14:40] – [Συγχρονισμένα Βlocks] gthanos | java:synchronized_methods_blocks [2018/03/08 12:03] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 13: | Line 13: | ||
<code java SynchronizedCounter.java> | <code java SynchronizedCounter.java> | ||
public class SynchronizedCounter { | public class SynchronizedCounter { | ||
- | | + | |
- | | + | |
- | c++; | + | c++; |
- | } | + | } |
- | | + | |
- | c--; | + | c--; |
- | } | + | } |
- | | + | |
- | return c; | + | return c; |
- | } | + | } |
} | } | ||
</ | </ | ||
Αν έχουμε ένα αντικείμενο //counter// της παραπάνω κλάσης τότε ισχύουν τα παρακάτω | Αν έχουμε ένα αντικείμενο //counter// της παραπάνω κλάσης τότε ισχύουν τα παρακάτω | ||
- | * Δεν είναι δυνατόν | + | * Δεν είναι δυνατόν |
===== Συγχρονισμένα Βlocks ===== | ===== Συγχρονισμένα Βlocks ===== | ||
Line 37: | Line 37: | ||
<code java> | <code java> | ||
- | public void addName(String name) { | + | public class SynchronizedCounter { |
- | | + | private int c = 0; |
- | lastName = name; | + | |
- | nameCount++; | + | |
- | } | + | |
- | | + | |
} | } | ||
</ | </ | ||
Line 57: | Line 56: | ||
public void inc1() { | public void inc1() { | ||
synchronized(lock1) { | synchronized(lock1) { | ||
- | | + | |
+ | | ||
+ | ; | ||
+ | | ||
+ | } | ||
} | } | ||
} | } | ||
Line 63: | Line 66: | ||
public void inc2() { | public void inc2() { | ||
synchronized(lock2) { | synchronized(lock2) { | ||
- | | + | |
+ | | ||
+ | ; | ||
+ | | ||
+ | } | ||
} | } | ||
} | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | <WRAP important 80% round center> | ||
+ | Στο παραπάνω παράδειγμα, | ||
+ | </ | ||
+ | |||
+ | <code java SyncBlockThread.java> | ||
+ | public class SyncBlockThread extends Thread { | ||
+ | SyncBlock block; | ||
+ | boolean counter1; | ||
+ | public SyncBlockThread(SyncBlock block, boolean counter1) { | ||
+ | this.block = block; | ||
+ | this.counter1 = counter1; | ||
+ | } | ||
+ | | ||
+ | public void run() { | ||
+ | if(counter1) | ||
+ | block.inc1(); | ||
+ | else | ||
+ | block.inc2(); | ||
+ | } | ||
+ | | ||
+ | public static void main(String []args) { | ||
+ | SyncBlock block = new SyncBlock(); | ||
+ | new SyncBlockThread(block, | ||
+ | new SyncBlockThread(block, | ||
+ | } | ||
} | } | ||
</ | </ | ||
Line 92: | Line 127: | ||
+ | |Προηγούμενο: | ||
java/synchronized_methods_blocks.1489848024.txt.gz · Last modified: 2017/03/18 14:40 by gthanos