Τι συμβαίνει με τη χρήση του HashMap σε περιβάλλον πολλαπλών νημάτων; … Είναι πρόβλημα εάν πολλά νήματα προστίθενται στην ίδια παρουσία του HashMap χωρίς να έχει συγχρονιστεί. Ακόμα κι αν μόνο 1 νήμα τροποποιεί ένα HashMap και άλλα νήματα διαβάζουν από τον ίδιο χάρτη χωρίς συγχρονισμό, θα αντιμετωπίσετε προβλήματα.
Μπορείτε να χρησιμοποιήσετε έναν HashMap σε περιβάλλον πολλαπλών νημάτων;
Πρέπει να βεβαιωθείτε: Όλες οι ενημερώσεις στο HashMap ολοκληρώνονται προτού δημιουργηθούν τα νήματα και το νήμα που δημιουργεί τον χάρτη διαχωρίζει επίσης τα νήματα. Τα νήματα χρησιμοποιούν μόνο το HashMap σε λειτουργία μόνο για ανάγνωση – είτε λήψη είτε επανάληψη χωρίς αφαίρεση. Δεν υπάρχουν νήματα που να ενημερώνουν τον χάρτη.
Γιατί το HashMap δεν πρέπει να χρησιμοποιείται σε περιβάλλον πολλαπλών νημάτων μπορεί να προκαλέσει επίσης έναν άπειρο βρόχο;
Η προεπιλεγμένη χωρητικότητα του HashMap είναι 16 και ο συντελεστής φόρτωσης είναι 0,75, που σημαίνει ότι το HashMap θα διπλασιάσει τη χωρητικότητά του όταν εισέλθει στον χάρτη το 12ο ζεύγος κλειδιού-τιμής (160,75=12). Όταν 2 νήμα προσπαθήσουν να αποκτήσουν πρόσβαση στο HashMap ταυτόχρονα, τότε μπορεί να συναντήσετε άπειρο βρόχο. Το νήμα 1 και το νήμα 2 προσπαθεί να βάλει το 12ο ζεύγος κλειδιού-τιμής.
Είναι ασφαλές το νήμα του HashMap;
Το
HashMap δεν είναι συγχρονισμένο. Δεν είναι ασφαλές για νήματα και δεν μπορεί να κοινοποιηθεί μεταξύ πολλών νημάτων χωρίς τον κατάλληλο κωδικό συγχρονισμού, ενώ το Hashtable είναι συγχρονισμένο.
Τι ταιριάζει καλύτερα σε πολυνήματαπεριβάλλον;
Η απάντηση είναι "ConcurrentHashMap"