Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 27855|Απάντηση: 1

[Πηγή] Java ThreadΟι τοπικές αρχές και η επαναχρησιμοποίηση πολλαπλών νημάτων οδηγούν σε ακαταστασία δεδομένων

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 1/11/2021 11:45:36 π.μ. | | | |
Στον προγραμματισμό, ορίζουμε παραμέτρους μεθόδου για τη μετάδοση μεταβλητού περιεχομένου, εάν το επίπεδο της μεθόδου εκτέλεσης είναι βαθύ, τότε κάθε μέθοδος πρέπει να ορίσει τις παραμέτρους που πρέπει να περάσουν, αυτή τη στιγμή, ορισμένες μεταβλητές μπορούν να περάσουν μέσω του ThreadLocal, εφόσον όλες οι μέθοδοι εκτελούνται στο ίδιο νήμα, η τιμή του ThreadLocal μπορεί να οριστεί και να διαβαστεί.

Η κλάση ThreadLocal χρησιμοποιείται για την παροχή τοπικών μεταβλητών μέσα στο νήμα. Όταν αυτές οι μεταβλητές είναι προσβάσιμες (get/set) σε περιβάλλον πολλαπλών νημάτων, οι μεταβλητές σε κάθε νήμα είναι σχετικά ανεξάρτητες από τις μεταβλητές σε άλλα νήματα.

Το ThreadLocal θα λάβει πρώτα το τρέχον νήμα (Thread t = Thread.currentThread()) κατά την εκτέλεση της μεθόδου set και θα χρησιμοποιήσει το τρέχον νήμα για να λάβει ένα ThreadLocalMap, εάν ο χάρτης δεν είναι κενός, σημαίνει ότι το τρέχον νήμα έχει έναν προηγουμένως δεσμευμένο χάρτη και, στη συνέχεια, ενημερώστε την τιμή αυτού του χάρτη, εάν όχι, χρησιμοποιήστε τον εαυτό του ως κλειδί για να βάλετε την τιμή στον χάρτη, έτσι ώστε να πραγματοποιηθεί η δέσμευση μεταβλητών και νημάτων.



Δοκιμάστε τον κώδικα, ρυθμίστε το χώρο συγκέντρωσης νημάτων ώστε να διατηρεί το πολύ 5 νήματα και όταν καλούμε τη μέθοδο λήψης ThreadLocal στην περίπτωση πολλαπλών νημάτων, θα λάβουμε τα δεδομένα ThreadLocal (Σύνολο δεδομένων από άλλα νήματα), εμάςΗ μέθοδος συνόλου ThreadLocal δεν καλείται στο τρέχον νήμα για να ορίσει τα δεδομένα, όπως φαίνεται στο παρακάτω σχήμα:



Αιτίες σφάλματος:Μόλις επαναχρησιμοποιηθεί ένα νήμα, είναι πιθανό η πρώτη τιμή που λαμβάνεται από το ThreadLocal να είναι μια τιμή που έχει απομείνει από άλλα προηγούμενα νήματα

Επειδή, αφού τελειώσουμε με το ThreadLocal στο τρέχον νήμα,Φροντίστε να καλέσετε την αφαίρεση για έγκαιρη εκκαθάριση。 Οπως φαίνεται παρακάτω:



Κώδικας:

(Τέλος)





Προηγούμενος:Το Docker εξετάζει τις ρυθμίσεις επανεκκίνησης κοντέινερ και τα κοντέινερ μαζικής διακοπής
Επόμενος:Jenkins (5) Παρουσίαση ομάδας έργου
Δημοσιεύτηκε στις 2/11/2021 9:30:12 μ.μ. |
Ελάτε να μάθετε ξανά.
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com