I daglig utvikling kan vi bruke køer, som er en lagringsstruktur som kan oppnå «først inn, først ut».
Bruksscenarier: skrive logger, sende e-poster, osv
Hvis vi trenger å registrere grensesnittloggen til hver bruker som ber om dataene våre, trenger vi ikke å skrive en logg hver gang brukeren ber om det, vi kan legge logginnholdet i køen og la andre tråder utføre det, slik at det ikke påvirker applikasjonens effektivitet.
En annen fordel er at ved å legge til data i køen ved samtidighet, ved bruk av en enkelt tråd for å utføre dataene i køen, kan unngå mange unntak; hvis samtidighet (multitrådet), vil tilgang til samme fysiske fil forårsake unntak. (med forbehold om tilgjengelighet)
Kø-universell tilnærming:
Dette er en abstrakt klasse, og du må arve denne abstraksjonsklassen og implementere Execute-abstraksjonsmetoden. Fordi jeg ikke vet hvilken type data du vil behandle, brukes generiske data her, det vil si at Entitet er av strengtype, metodeparametere er strengtype, og dataene du behandler er strengtypedata.
ConcurrentQueue trådsikker kø sikrer at det ikke vil være noen unntak i et flertrådet miljø.
ManualResetEvent for å kontrollere trådens signal,Tidligere sjekket vi køen for data hvert par sekunder eller minutterNå legger vi dataene til køen og trenger bare å sende et signal!
Bruk:
(Slutt)
|