This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
|
java:java_util_concurrent [2017/03/21 11:59] gthanos [Υλοποίηση μίας διασυνδεδεμένης λίστας η οποία είναι συγχρονισμένη] |
java:java_util_concurrent [2017/03/21 12:29] gthanos [Atomic Integer, Long, Boolean, Reference] |
||
|---|---|---|---|
| Line 75: | Line 75: | ||
| Το παραπάνω interface υλοποιείται μεσω της κλάσης [[http:// | Το παραπάνω interface υλοποιείται μεσω της κλάσης [[http:// | ||
| ===== Atomic Integer, Long, Boolean, Reference ===== | ===== Atomic Integer, Long, Boolean, Reference ===== | ||
| + | |||
| + | Στο πακέτο [[https:// | ||
| + | |||
| + | * [[AtomicBoolean: | ||
| + | * [[AtomicInteger: | ||
| + | * [[AtomicIntegerArray: | ||
| + | * [[AtomicLong: | ||
| + | * [[AtomicLongArray: | ||
| + | * [[AtomicReference: | ||
| + | * [[AtomicReferenceArray: | ||
| + | |||
| + | Οι βασικές μέθοδοι που διαθέτουν οι παραπάνω κλάσεις είναι οι εξής: | ||
| + | * **compareAndSet: | ||
| + | * **get:** Επιστρέφει την τρέχουσα τιμή. | ||
| + | * **getAndSet: | ||
| + | * **lazySet: | ||
| + | * **set:** Θέτει μία νέα τιμή για την μεταβλητή. | ||
| + | |||
| ===== Παραδείγματα Χρήσης Εργαλείων Συγχρονισμού ===== | ===== Παραδείγματα Χρήσης Εργαλείων Συγχρονισμού ===== | ||
| Line 432: | Line 450: | ||
| Random rand; | Random rand; | ||
| SynchronizedList< | SynchronizedList< | ||
| + | // | ||
| | | ||
| public ListModifierThread(SynchronizedList< | public ListModifierThread(SynchronizedList< | ||
| + | //public ListModifierThread(ArrayList< | ||
| this.list = list; | this.list = list; | ||
| rand = new Random( new Date().getTime() ); | rand = new Random( new Date().getTime() ); | ||
| Line 442: | Line 462: | ||
| list.add( rand.nextInt(1000) ); | list.add( rand.nextInt(1000) ); | ||
| - | | + | |
| - | while( list.size() > 0 ) | + | list.remove(0); |
| - | | + | |
| | | ||
| if( list.isEmpty() ) | if( list.isEmpty() ) | ||
| Line 450: | Line 469: | ||
| else | else | ||
| System.out.println( this.getName() +": list is NOT empty!" | System.out.println( this.getName() +": list is NOT empty!" | ||
| - | list.listWriteUnlock(); | ||
| } | } | ||
| } | } | ||
| Line 457: | Line 475: | ||
| public static void main(String []args) { | public static void main(String []args) { | ||
| SynchronizedList< | SynchronizedList< | ||
| + | // | ||
| | | ||
| for(int i=0; i<10; i++) { | for(int i=0; i<10; i++) { | ||