рд╕реНрд░реЛрдд
рд▓реЗрдЦрдХ: рдмреНрд░рд╛рдпрди рдЧреЛрдПрдЯрдЬрд╝, рдкреЙрд▓ рд╕реИрдВрдбреЛрдЬрд╝, рдЕрд▓реЗрдХреНрд╕реА рд╢рд┐рдкрд┐рд▓реЗрд╡, рд╣реЗрдВрдЬ рдХрд╛рдмреБрддреНрдЬрд╝, рдЬреЛ рдмреЛрдПрдмреАрд░, рдХреЗ рд╕рд╛рде рдбрдЧ рд▓реА ...
java.util.streams
рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣ рдФрд░ рдЕрдиреНрдп рдбреЗрдЯрд╛ рд╕реНрд░реЛрддреЛрдВ рдкрд░ рдбреЗрдЯрд╛-рдЪрд╛рд▓рд┐рдд рд╕рдВрдЪрд╛рд▓рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ рдзрд╛рд░рд╛ рд╡рд┐рдзрд┐рдпрд╛рдБ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдкрд░ рд╕рдорд╛рди рд╕рдВрдЪрд╛рд▓рди рдХрд░рддреА рд╣реИрдВред parallelStream()
рд╕рдВрдЧреНрд░рд╣ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрдИ рдХреЛрд░ рд╣реИрдВ, рддреЛ рдЖрдк рдбреЗрдЯрд╛-рд╕рдВрдЪрд╛рд▓рд┐рдд рдХреЛ рдбреЗрдЯрд╛-рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдХрдм рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИ?
S.parallelStream().operation(F)
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ S.parallelStream().operation(F)
рдмрдЬрд╛рдп S.parallelStream().operation(F)
S.stream().operation(F)
, рдмрд╢рд░реНрддреЗ рдХрд┐ рдСрдкрд░реЗрд╢рди рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВ рдФрд░ рдпрд╛ рддреЛ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рд░реВрдк рд╕реЗ рдорд╣рдВрдЧреЗ рд╣реИрдВ рдпрд╛ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдРрд╕реЗ рддрддреНрд╡реЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИрдВред (рдЕрд▓рдЧ-рдЕрд▓рдЧ) рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ, рдпрд╛ рджреЛрдиреЛрдВред рдЕрдзрд┐рдХ рд╕рдЯреАрдХ:
F
: рдПрдХ рддрддреНрд╡ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди, рдЖрдорддреМрд░ рдкрд░ рдПрдХ рд▓рдВрдмреЛрджрд░, рд╕реНрд╡рддрдВрддреНрд░ рд╣реЛрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдХрд┐рд╕реА рднреА рддрддреНрд╡ рдкрд░ рдСрдкрд░реЗрд╢рди рд╕реНрд╡рддрдВрддреНрд░ рд╣реИ рдФрд░ рдЕрдиреНрдп рддрддреНрд╡реЛрдВ рдкрд░ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдЧреИрд░-рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕реНрдЯреЗрдЯрд▓реЗрд╕ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ, рд╕реНрдЯреНрд░реАрдо рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬ рджреЗрдЦреЗрдВ)редS
: рдореВрд▓ рд╕рдВрдЧреНрд░рд╣ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИред рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдиреНрдп рд╕рдорд╛рдирд╛рдВрддрд░ рд╣реИрдВ, рдбреЗрдЯрд╛ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, java.util.SplittableRandom
(рд╕рдорд╛рдирд╛рдВрддрд░рдг рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЖрдк stream.parallel()
рд╡рд┐рдзрд┐) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХреЛрд░ рдореЗрдВ I / O рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реНрд░реЛрдд рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЕрдиреБрдХреНрд░рдорд┐рдХ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╣реИрдВред- рдЕрдиреБрдХреНрд░рдорд┐рдХ рдореЛрдб рдореЗрдВ рдХреБрд▓ рд░рди рд╕рдордп рдиреНрдпреВрдирддрдо рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕реАрдорд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред рдЖрдЬ, рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП, рд╕реАрдорд╛ рд▓рдЧрднрдЧ резреж рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб рдХреЗ рдмрд░рд╛рдмрд░ (x10 рдХреЗ рднреАрддрд░) рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдЯреАрдХ рдорд╛рдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХреЗрд╡рд▓
Q
(рдПрдХ F
рдХрд╛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рдордп) рджреНрд╡рд╛рд░рд╛ N
(рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛) рдХреЛ рдЧреБрдгрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдФрд░ Q
рдХреЛ рд▓рдЧрднрдЧ рд╕рдВрдЪрд╛рд▓рди рдХреА рд╕рдВрдЦреНрдпрд╛ рдпрд╛ рдХреЛрдб рдХреА рд▓рд╛рдЗрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ N * Q
рдХрдо рд╕реЗ рдХрдо 10000
рд╕реЗ рдХрдо рд╣реИ (рдпрджрд┐ рдЖрдк рд╢рд░реНрдореАрд▓реЗ рд╣реИрдВ, рддреЛ рдПрдХ рдпрд╛ рдПрдХ рдЬреЛрдбрд╝реА рдЬреЛрдбрд╝реЗрдВ)ред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ F
рдПрдХ рдЫреЛрдЯрд╛ рдХрд╛рд░реНрдп рд╣реИ рдЬреИрд╕реЗ x -> x + 1
, рддреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдЕрд░реНрде рд╣реЛрдЧрд╛ рдЬрдм N >= 10000
ред рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрджрд┐ F
рдПрдХ рд╡рдЬрдирджрд╛рд░ рдЧрдгрдирд╛ рд╣реИ, рддреЛ рд╢рддрд░рдВрдЬ рдХреЗ рдЦреЗрд▓ рдореЗрдВ рдЕрдЧрд▓реА рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдЪрд╛рд▓ рдЦреЛрдЬрдиреЗ рдХреЗ рд╕рдорд╛рди рд╣реИ, рддреЛ Q
рдореВрд▓реНрдп рдЗрддрдирд╛ рдмрдбрд╝рд╛ рд╣реИ рдХрд┐ N
рдХреЛ рдЙрдкреЗрдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рддрдХ рд╕рдВрдЧреНрд░рд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ред
рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдврд╛рдВрдЪрд╛ рдЙрдкрд░реЛрдХреНрдд рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдкрд░ рднреА рдЬреЛрд░ рдирд╣реАрдВ рджреЗрдЧрд╛ (рдФрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛)ред рдпрджрд┐ рдЧрдгрдирд╛ рдЕрдиреНрдпреЛрдиреНрдпрд╛рд╢реНрд░рд┐рдд рд╣реИрдВ, рддреЛ рдЙрдирдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдпрд╛ рдмрд┐рд▓реНрдХреБрд▓ рд╣рд╛рдирд┐рдХрд╛рд░рдХ рд╣реЛрдЧрд╛ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЬрдиреНрдо рджреЗрдЧрд╛ред рдЙрдкрд░реЛрдХреНрдд рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдореБрджреНрджреЛрдВ рдФрд░ рдЯреНрд░реЗрдбрдСрдл рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЕрдиреНрдп рдорд╛рдирджрдВрдбреЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
- рд▓реЙрдиреНрдЪ (рд╕реНрдЯрд╛рд░реНрдЯ-рдЕрдк)
рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрд░ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐, рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдПрдХ рд╢рдХреНрддрд┐ рдкреНрд░рдмрдВрдзрди рддрдВрддреНрд░ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЗ рд╕рд╛рде рдереА, рдЬреЛ рдХрднреА-рдХрднреА рдЬреЗрд╡реАрдПрдо, рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд░ рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдУрд╡рд░рд▓реЗ рдХреЗ рд╕рд╛рде, рдХреЛрд░ рдХреЗ рдкреНрд░рдХреНрд╖реЗрдкрдг рдореЗрдВ рдордВрджреА рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреА рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬрд┐рд╕ рд╕реАрдорд╛ рдкрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЛрдб рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рд╡рд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХреЛрд░ рдХреЗ рд╕рд╛рде рдЙрдкрдкреНрд░рдХрд╛рд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдордп рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЕрдиреБрдХреНрд░рдорд┐рдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдЕрдзрд┐рдХ рдКрд░реНрдЬрд╛ рдХреБрд╢рд▓ рд╣реЛ рд╕рдХрддреА рд╣реИ (рдкреНрд░реЛрд╕реЗрд╕рд░ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реЗрдЦ рджреЗрдЦреЗрдВ )ред - рд╡рд┐рд╡рд░рдг рджреЗрдирд╛ (рдЧреНрд░реИрдиреНрдпреБрд▓реИрд░рд┐рдЯреА)
рдпрд╣ рдЫреЛрдЯреА рдЧрдгрдирд╛рдУрдВ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд╛рдпрдж рд╣реА рдХрднреА рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдлреНрд░реЗрдорд╡рд░реНрдХ рдЖрдорддреМрд░ рдкрд░ рдХрд╛рд░реНрдп рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╕рднреА рдЙрдкрд▓рдмреНрдз рд╕рд┐рд╕реНрдЯрдо рдХреЛрд░ рдкрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рднрд╛рдЧ рдХрд╛рдо рдХрд░ рд╕рдХреЗрдВред рдпрджрд┐, рд╢реБрд░реБрдЖрдд рдХреЗ рдмрд╛рдж, рдкреНрд░рддреНрдпреЗрдХ рдХреЛрд░ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреЛрдИ рдХрд╛рдо рдирд╣реАрдВ рд╣реИ, рддреЛ (рдЖрдорддреМрд░ рдкрд░ рдЕрдиреБрдХреНрд░рдорд┐рдХ) рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕ рдмрд░реНрдмрд╛рдж рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдХреЛрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ 2 рд╕реЗ 256 рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб рддрдХ рд╣реЛрддреА рд╣реИ, рдпрд╣ рдХрд╛рд░реНрдп рдХреЗ рдЕрддреНрдпрдзрд┐рдХ рд╡рд┐рднрд╛рдЬрди рдХреЗ рдЕрд╡рд╛рдВрдЫрдиреАрдп рдкреНрд░рднрд╛рд╡ рдХреЛ рднреА рд░реЛрдХрддрд╛ рд╣реИред - рдкреГрдердХ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ (Splittability)
рд╕рдмрд╕реЗ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ ArrayList
рдФрд░ {Concurrent}HashMap
, рд╕рд╛рде рд╣реА рдирд┐рдпрдорд┐рдд рд╕рд░рдгрд┐рдпрд╛рдБ ( T[]
, рдЬреЛ рд╕реНрдерд┐рд░ java.util.Arrays
рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИрдВред рдХрдо рд╕реЗ рдХрдо рдХреБрд╢рд▓ рд╕реНрдкреНрд▓рд┐рдЯрд░ LinkedList
, BlockingQueue
рдФрд░ рдЖрдИ / рдУ рдЖрдзрд╛рд░рд┐рдд рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реНрд░реЛрдд рд╣реИрдВред рдмрд╛рдХреА рдХрд╣реАрдВ рдмреАрдЪ рдореЗрдВ рд╣реИрдВ (рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рдЬреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЕрднрд┐рдЧрдо рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИрдВ рдФрд░ / рдпрд╛ рдХреБрд╢рд▓ рдЦреЛрдЬ рдЖрдорддреМрд░ рдкрд░ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛрддреА рд╣реИрдВ)ред рдпрджрд┐ рдмрдВрдЯрд╡рд╛рд░реЗ рдХрд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд▓реЗрддрд╛ рд╣реИ, рддреЛ рдкреНрд░рдпрд╛рд╕ рд╡реНрдпрд░реНрде рд╣реИред рдпрджрд┐ Q
рдХрд╛рдлреА рдмрдбрд╝рд╛ рд╣реИ, рддреЛ рдЖрдк LinkedList
рд▓рд┐рдП рднреА рд╕рдорд╛рдирд╛рдВрддрд░ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рд╡реГрджреНрдзрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рджреБрд░реНрд▓рдн рдорд╛рдорд▓рд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреБрдЫ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдПрдХ рддрддреНрд╡ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЕрдкрдШрдЯрди рдХреА рдбрд┐рдЧреНрд░реА рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЗрди рдкреНрд░рднрд╛рд╡реЛрдВ рдХреА рд╕рдЯреАрдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдЖрдк рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЬреЗрдПрдордПрдЪ рдЬреИрд╕реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ )ред рд▓реЗрдХрд┐рди рд╕рдВрдЪрдпреА рдкреНрд░рднрд╛рд╡ рдиреЛрдЯрд┐рд╕ рдХрд░рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИред рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП - рдПрдХ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 32-рдХреЛрд░ рдЯреЗрд╕реНрдЯ рдорд╢реАрди рдкрд░, рдЬрдм рдЖрдк рдЫреЛрдЯреЗ рдХрд╛рд░реНрдп рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ max()
рдпрд╛ sum()
, ArrayList
рдКрдкрд░ ArrayList
рдмреНрд░реЗрдХ- ArrayList
рдкреЙрдЗрдВрдЯ рд▓рдЧрднрдЧ 10,000 рд╣реЛрддрд╛ рд╣реИред рдЕрдзрд┐рдХ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП, 20 рдЧреБрдирд╛ рддрдХ рддреНрд╡рд░рдг рдиреЛрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред 10,000 рд╕реЗ рдХрдо рд╡рд╕реНрддреБрдУрдВ рд╡рд╛рд▓реЗ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рдиреЗ рдХрд╛ рд╕рдордп 10,000 рд╕реЗ рдмрд╣реБрдд рдХрдо рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЕрдиреБрдХреНрд░рдорд┐рдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдзреАрдорд╛ рд╣реИред рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рдкрд░рд┐рдгрд╛рдо 100 рд╕реЗ рдХрдо рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ - рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╢рд╛рдорд┐рд▓ рдереНрд░реЗрдбреНрд╕ рдХреБрдЫ рднреА рдЙрдкрдпреЛрдЧреА рд╣реЛрдиреЗ рдХреЗ рдмрд┐рдирд╛ рдмрдВрдж рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЧрдгрдирд╛ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреВрд░реА рд╣реЛ рдЬрд╛рддреА рд╣реИред рджреВрд╕рд░реА рдУрд░, рдЬрдм рддрддреНрд╡реЛрдВ рдкрд░ рд╕рдВрдЪрд╛рд▓рди рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛ рд╣реЛрддрд╛ рд╣реИ, рдЬрдм рдХреБрд╢рд▓ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрдЧреНрд░рд╣рдгреАрдп рд╕рдВрдЧреНрд░рд╣, рдЬреИрд╕реЗ рдХрд┐ ArrayList
, рддреЛ рд▓рд╛рдн рддреБрд░рдВрдд рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред
рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреЛ рдкреИрд░рд╛рдлреНрд░реЗрд╕реЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, parallel()
рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдЕрдиреБрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрдо рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдкрд░ рд▓рдЧрднрдЧ 100
рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб рдХреА рд▓рд╛рдЧрдд рдЖ рд╕рдХрддреА рд╣реИ, рдФрд░ рдЕрдиреНрдпрдерд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрдо рд╕реЗ рдХрдо рдЗрд╕ рдмрд╛рд░ рдЦреБрдж рдХреЛ рдмрдЪрд╛рдПрдВ (рдпрд╛ рдХрдИ рдмрдбрд╝реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдШрдВрдЯреЗ)ред рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓рд╛рдЧрдд рдФрд░ рд▓рд╛рдн рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдордп рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╕рдВрджрд░реНрдн рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрдиреБрдХреНрд░рдорд┐рдХ рдЪрдХреНрд░ рдХреЗ рднреАрддрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдЫреЛрдЯреА рдЧрдгрдирд╛рдУрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рд╕реЗ рдЙрддрд╛рд░-рдЪрдврд╝рд╛рд╡ (рдкреНрд░рджрд░реНрд╢рди рдорд╛рдЗрдХреНрд░реЛрдЯрд┐рд╕реНрдЯ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ) рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред
рдХреНрдпреВ рдПрдВрдб рдП
- рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдкрд░рд┐рдЪрд╛рд▓рди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЗрд╡реАрдПрдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╕рдордЭ рд╕рдХрддрд╛ рд╣реИ?
рд╡рд╣ рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдХреНрд╕рд░ рдирд┐рд░реНрдгрдп рдЧрд▓рдд рд╣реЛрдЧрд╛ред рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдорд▓реНрдЯреА-рдХреЛрд░ рд╕рдорд╛рдирддрд╛ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдиреЗ рдкрд┐рдЫрд▓реЗ рддреАрд╕ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдиреЗрддреГрддреНрд╡ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП, рдлреНрд░реЗрдорд╡рд░реНрдХ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╣рд╛рдВ рдпрд╛ рдирд╣реАрдВ рдХреЗ рдмреАрдЪ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдЬреЛ рд▓рдЧрд╛рддрд╛рд░ рдХреНрд░рдорд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рд╕рд╛рдордиреЗ рдЖрддреЗ рд╣реИрдВ, рдЬреЛ рдХрднреА рднреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд╛рдпрдм рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕ рдореВрд▓реНрдп рдХрд╛ рд╕реАрдзреЗ (рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдмрд┐рдирд╛) рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддреБрд▓рдирд╛ рдореЗрдВ рдХрд┐рд╕реА рдПрдХрд▓ рддрддреНрд╡ рд╡рд╛рд▓реЗ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╕реМ рдЧреБрдирд╛ рдордВрджреА рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрднреА-рдХрднреА JVM рдЖрдкрдХреЗ рд▓рд┐рдП рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЕрдиреБрдХреНрд░рдорд┐рдХ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЛрдб рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрднреА рдирд╣реАрдВред рджреВрд╕рд░реА рдУрд░, рд╣рдо рдЙрдореНрдореАрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЙрдкрдХрд░рдг рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдмреЗрд╣рддрд░ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреЗред
- рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдПрдХ рдЕрдЪреНрдЫрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдорд╛рдкрджрдВрдбреЛрдВ (
F
, N
, Q
, S
) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдЬреНрдЮрд╛рди рдирд╣реАрдВ рд╣реИ?
рдпрд╣ рднреА, рдЕрдиреБрдХреНрд░рдорд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕рдорд╛рди рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Collection
рд╡рд░реНрдЧ рдХрд╛ S.contains(x)
рд╡рд┐рдзрд┐ рдЖрдо рддреМрд░ рдкрд░ рддреЗрдЬреА рд╕реЗ рдЪрд▓рддреА рд╣реИ рдпрджрд┐ S
рдПрдХ HashSet
, рддреЛ рдзреАрдореА рд╣реИ рдпрджрд┐ LinkedList
рдФрд░ рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдФрд╕рдд рд╣реИред рдЖрдорддреМрд░ рдкрд░, рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдШрдЯрдХ рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдСрдкрд░реЗрд╢рди рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдлрд┐рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЪреБрдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╕рдорд╛рдирд╛рдиреНрддрд░ рдкрд░рд┐рдЪрд╛рд▓рдиреЛрдВ рдкрд░ рднреА рдпрд╣реА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдВрддрд░рд┐рдХ рдореВрд▓реНрдп рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рдПрдХ рдШрдЯрдХ рдПрдХ рдРрд╕реА рд╡рд┐рдзрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЙрд╕рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рд╕реАрдорд╛ рддрдХ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ, рдЬреЛ рд╕рдордЭ рдореЗрдВ рдЖрдПрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдмрд┐рдЯрдХреЙрдЗрди рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдмрд╣реБрдд рдорд╣рдВрдЧрд╛ рдирд╣реАрдВ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг:
public long getMaxPrice() { return priceStream().max(); } private Stream priceStream() { return (prices.size() < MIN_PAR) ? prices.stream() : prices.parallelStream(); }
рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрдм рдФрд░ рдХреИрд╕реЗ рд╕рдВрдЧрд╛рдорд┐рддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдиреНрдп рд╡рд┐рдЪрд╛рд░реЛрдВ рддрдХ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- рдпрджрд┐ рдореЗрд░рд╛ рдХрд╛рд░реНрдп рд╕рдВрднрд╡рддрдпрд╛ I / O рдпрд╛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдСрдкрд░реЗрд╢рди рдХрд░рддрд╛ рд╣реИ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?
рдПрдХ рдЪрд░рдо рдкрд░ рдРрд╕реЗ рдХрд╛рд░реНрдп рд╣реИрдВ рдЬреЛ рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдХреЗ рдорд╛рдирджрдВрдбреЛрдВ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЕрдиреБрдХреНрд░рдорд┐рдХ I / O рд╕рдВрдЪрд╛рд▓рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рддрд╛рд▓рд╛ рд▓рдЧрд╛ рд╣реБрдЖ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ, рдФрд░ рдРрд╕реЗ рдорд╛рдорд▓реЗ рдЬрд┐рдирдореЗрдВ I / O рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рд╕рдорд╛рдирд╛рдВрддрд░ рдЙрдк-рдХрд╛рд░реНрдп рдореЗрдВ рддреНрд░реБрдЯрд┐ рджреВрд╕рд░реЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИред рдЙрдирдХрд╛ рд╕рдорд╛рдирд╛рдВрддрд░ рд╣реЛрдирд╛ рдмрд╣реБрдд рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ред рджреВрд╕рд░реА рдУрд░, рдРрд╕реА рдЧрдгрдирд╛рдПрдБ рд╣реИрдВ рдЬреЛ рдХрднреА-рдХрднреА I / O рдпрд╛ рд╢рд╛рдпрдж рд╣реА рдХрднреА рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рд░реЛрдХрддреА рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд╛рдорд▓реЗ рдФрд░ ConcurrentHashMap
рд░реВрдк рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ)ред рд╡реЗ рд╣рд╛рдирд┐рд░рд╣рд┐рдд рд╣реИрдВред рдЙрдирдХреЗ рдмреАрдЪ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЕрдзрд┐рдХ рд╢реЛрдз рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕рдмрдЯрд╛рд╕реНрдХ рдХреЛ I / O рдпрд╛ рдПрдХреНрд╕реЗрд╕ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдореЗрдВ рдХрд╛рдлреА рд╕рдордп рддрдХ рдЕрд╡рд░реБрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдпрд╛ JVM рджреНрд╡рд╛рд░рд╛ рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдмрд┐рдирд╛ CPU рд╕рдВрд╕рд╛рдзрди рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдЗрд╕рд╕реЗ рд╕рднреА рдХрд╛ рдмреБрд░рд╛ рд╣рд╛рд▓ рд╣реИред рдЗрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╕рдорд╛рдирд╛рдВрддрд░ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╣рдореЗрд╢рд╛ рд╕рд╣реА рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЪреНрдЫреЗ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ I / O рдФрд░ CompletableFuture
рджреГрд╖реНрдЯрд┐рдХреЛрдгред
- рдпрджрд┐ рдореЗрд░рд╛ рд╕реНрд░реЛрдд I / O рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?
рдлрд┐рд▓рд╣рд╛рд▓, JDK Stream
/ I / O рдЬрдирд░реЗрдЯрд░ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, BufferedReader.lines()
) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╡реЗ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЕрдиреБрдХреНрд░рдорд┐рдХ рдореЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ рдЙрдкрд▓рдмреНрдз рддрддреНрд╡реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдмрдлрд░ рдЖрдИ / рдУ рдХреЗ рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рд╡рд╛рд▓реЗ рдереЛрдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди, рдлрд┐рд▓рд╣рд╛рд▓, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдЬрдирд░реЗрдЯрд░ Stream
рдПрд╕, Spliterator
рдПрд╕ рдФрд░ Collector
рдПрд╕ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред JDK рдХреА рднрд╡рд┐рд╖реНрдп рдХреА рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдореЗрд░рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдПрдХ рд╡реНрдпрд╕реНрдд рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЪрд▓рддрд╛ рд╣реИ рдФрд░ рд╕рднреА рдХрд░реНрдиреЗрд▓ рд╡реНрдпрд╕реНрдд рд╣реИрдВ?
рдорд╢реАрдиреЛрдВ рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рдХреЛрд░ рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рд╕рдВрдЪрд╛рд▓рди рдХрд░рддреЗ рд╕рдордп рдЬрд╛рджреБрдИ рд░реВрдк рд╕реЗ рдирдП рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрдм рддрдХ рдПрдХ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЛрдб рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдкрджрдВрдб рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмреЛрд▓рддреЗ рд╣реИрдВ , рддрдм рддрдХ рд╕рдВрджреЗрд╣ рдХреА рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд╛рд░реНрдп рджреВрд╕рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕реАрдкреАрдпреВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЖрдк рдХрдо рддреНрд╡рд░рдг рдХреЛ рдиреЛрдЯрд┐рд╕ рдХрд░реЗрдВрдЧреЗред рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпрд╣ рдЕрднреА рднреА рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реА рд╣реИред рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рддрдВрддреНрд░ рдХреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрджрд┐ рдХреЛрдИ рдЙрдкрд▓рдмреНрдз рдХреЛрд░ рди рд╣реЛ, рддреЛ рдЖрдкрдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреЗрд╡рд▓ рдереЛрдбрд╝реА рдордВрджреА рджрд┐рдЦрд╛рдИ рджреЗрдЧреА, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЬрдм рд╕рд┐рд╕реНрдЯрдо рдЗрддрдирд╛ рдЕрдзрд┐рдХ рднрд╛рд░рд┐рдд рд╣реЛ рдЬрд╛рдП рдХрд┐ рд╡рд╣ рдЕрдкрдирд╛ рд╕рд╛рд░рд╛ рд╕рдордп рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдореЗрдВ рдЦрд░реНрдЪ рдХрд░реЗ, рдпрд╛ рдЗрд╕ рдЙрдореНрдореАрдж рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдРрд╕реА рдХреЛрдИ рдкреНрд░рдгрд╛рд▓реА рд╣реИ, рддреЛ рд╢рд╛рдпрдж рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЬреЗрд╡реАрдПрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ / рдиреНрдпреВрдХреНрд▓рд┐рдпрд░рд┐рдЯреА рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдФрд░ рдЕрдЧрд░ рдЖрдк рд╕рд┐рд╕реНрдЯрдо рдПрдбрдорд┐рдирд┐рд╕реНрдЯреНрд░реЗрдЯрд░ рд╣реИрдВ, рддреЛ рдРрд╕рд╛ рдХрд░рдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред
- рд╕рдорд╛рдирд╛рдВрддрд░ рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдХреНрдпрд╛ рд╕рднреА рдСрдкрд░реЗрд╢рди рд╕рдорд╛рдирд╛рдВрддрд░ рд╣реЛрддреЗ рд╣реИрдВ?
рд╣рд╛рдВред рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рд╣рдж рддрдХред рд▓реЗрдХрд┐рди рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╕реНрдЯреНрд░реАрдо-рдлреНрд░реЗрдорд╡рд░реНрдХ рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рдЬрдм рд╕реНрд░реЛрддреЛрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдПред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдХрдо рдкреНрд░рддрд┐рдмрдВрдз, рд╕рдорд╛рдирддрд╛ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдХреНрд╖рдорддрд╛ред рджреВрд╕рд░реА рдУрд░, рдЗрд╕ рдмрд╛рдд рдХреА рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рд░реВрдкрд░реЗрдЦрд╛ рд╕рдорд╡рд░реНрддреА рдХреЗ рд▓рд┐рдП рд╕рднреА рдЙрдкрд▓рдмреНрдз рдЕрд╡рд╕рд░реЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░реЗрдЧреА рдФрд░ рд▓рд╛рдЧреВ рдХрд░реЗрдЧреАред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдордп рдФрд░ рдХреНрд╖рдорддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХрд╛ рдЕрдкрдирд╛ рд╕рдорд╛рдзрд╛рди рд╕рдорд╛рдирддрд╛ рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХрд╛ рдмреЗрд╣рддрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
- рдореБрдЭреЗ рд╕рдВрдЧрд╛рдорд┐рддрд┐ рд╕реЗ рдХреНрдпрд╛ рддреНрд╡рд░рдг рдорд┐рд▓реЗрдЧрд╛?
рдпрджрд┐ рдЖрдк рдЗрди рдпреБрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ, рдЖрдорддреМрд░ рдкрд░, рд╕рдордЭ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдкреНрд░рд┐рдбрд┐рдХреНрдЯрд┐рдмрд┐рд▓рд┐рдЯреА рдЖрдзреБрдирд┐рдХ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдПрдХ рдордЬрдмреВрдд рдмрд┐рдВрджреБ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдЙрддреНрддрд░ рдирд╣реАрдВ рд╣реИред рдХреИрд╢ рдЗрд▓рд╛рдХреЗ, рдЬреАрд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ, рдЬреЗрдЖрдИрдЯреА рд╕рдВрдХрд▓рди, рдореЗрдореЛрд░реА рдПрдХреНрд╕реЗрд╕ рдЯрдХрд░рд╛рд╡, рдбреЗрдЯрд╛ рд╕реНрдерд╛рди, рдУрдПрд╕ рд╕рдордпрдмрджреНрдзрди рдиреАрддрд┐рдпрд╛рдВ рдФрд░ рд╣рд╛рдЗрдкрд░рд╡рд┐рдЬрд░ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреБрдЫ рдРрд╕реЗ рдХрд╛рд░рдХ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИред рдЕрдиреБрдХреНрд░рдорд┐рдХ рдореЛрдб рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рднреА рдЙрдирдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЗ рдЕрдзреАрди рд╣реИ, рдЬреЛ, рд╕рдорд╛рдирддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЕрдХреНрд╕рд░ рдкреНрд░рд╡рд░реНрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдЕрдиреБрдХреНрд░рдорд┐рдХ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ 10 рдкреНрд░рддрд┐рд╢рдд рдЕрдВрддрд░ рдХреЗ рдХрд╛рд░рдг рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ 10 рдЧреБрдирд╛ рдЕрдВрддрд░ рдкреИрджрд╛ рдХрд░ рд╕рдХрддреА рд╣реИред
рд╕реНрдЯреНрд░реАрдо рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ рддреНрд╡рд░рдг рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрджрд┐рдо рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдЬреИрд╕реЗ IntStream
, рдЖрдорддреМрд░ рдкрд░ рдЕрдиреБрдХреНрд░рдорд┐рдХ рдореЛрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЛрдб рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИред рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рди рдХреЗрд╡рд▓ рд╕рдВрд╕рд╛рдзрдиреЛрдВ (рдФрд░ рдореЗрдореЛрд░реА) рдХреА рдЦрдкрдд рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдмрд▓реНрдХрд┐ рдХреИрд╢ рд╕реНрдерд╛рдиреАрдпрддрд╛ рдореЗрдВ рднреА рд╕реБрдзрд╛рд░ рд╣реЛрддрд╛ рд╣реИред collect
рдСрдкрд░реЗрд╢рди рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, HashMap
рдмрдЬрд╛рдп ConcurrentHashMap
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдЖрдВрддрд░рд┐рдХ рд▓рд╛рдЧрдд рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред рдЕрдиреБрднрд╡ рдХреЗ рд╕рд╛рде рдирдП рдЯрд┐рдкреНрд╕ рдФрд░ рдЯреНрд░рд┐рдХ рд╕рд╛рдордиреЗ рдЖрдПрдВрдЧреЗред
- рдпрд╣ рд╕рдм рдмрд╣реБрдд рдбрд░рд╛рд╡рдирд╛ рд╣реИ! рдХреНрдпрд╛ рд╣рдо рд╕рд┐рд░реНрдл рдЬреЗрд╡реАрдПрдо рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдореЛрдВ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЖ рд╕рдХрддреЗ рд╣реИрдВ?
рд╣рдо рдЖрдкрдХреЛ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рдХрд┐ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реНрд╕ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЧрд▓рдд рдХрд░рдиреЗ рдХреЗ рдирдП рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрднрд░рдирд╛ рдбрд░рд╛рд╡рдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХреЛрдб, рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдФрд░ рдореВрд▓реНрдпрд╛рдВрдХрди рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣реЛрдВрдЧреАред рджрд╢рдХреЛрдВ рдкрд╣рд▓реЗ, рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдиреЗ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреА рдереА рдХрд┐ рдЖрд╡реЗрджрди рдХреЗ рд╕реНрддрд░ рдкрд░ рд╕рдВрдЧрд╛рдорд┐рддрд┐ рдмрдбрд╝реА рдЖрдкрджрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдиреЗрдЧреАред рд▓реЗрдХрд┐рди рдпрд╣ рдХрднреА рд╕рдЪ рдирд╣реАрдВ рд╣реБрдЖред