рдкреЗрдбрд╝ рдХрдИ рдзрд╛рдЧреЛрдВ рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░, рдореИрдВ рдЬрдирддрд╛ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдирд┐рд╢реНрдЪрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬреЛ рдореБрдЭреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдвреВрдВрдврдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд▓рдЧ рд░рд╣рд╛ рдерд╛ред

рдПрдХ рдкреЗрдбрд╝ рдХреНрдпрд╛ рд╣реИ, рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рджреЗрдЦреЗрдВред


рдЕрдВрдЬреАрд░ред 1 рдПрдХ рдкреЗрдбрд╝ рдХрд╛ рдЙрджрд╛рд╣рд░рдгред

рддреЛ, рдЖрдкрдХреЛ рдкреЗрдбрд╝ рдХреЛ рдХрдИ рдзрд╛рдЧреЗ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбрд┐рд╕реНрдХ рдкрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рднреМрддрд┐рдХ рд░реВрдк рд╕реЗ рдбрд┐рд╕реНрдХ рдПрдХ рдзрд╛рд░рд╛ рдореЗрдВ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдлрд╝рд╛рдЗрд▓ рдЦреЛрдЬ рддреНрд╡рд░рдг рджреЗ рд╕рдХрддреА рд╣реИ, рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрдм рдПрдХ рдПрдХрд▓ рдзрд╛рд░рд╛ рдмрд╣реБ-рд╕реНрддрд░реАрдп рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдХреА рдЦреЛрдЬ рдХрд░рддреА рд╣реИ, рдФрд░ рд╡рд╛рдВрдЫрд┐рдд рдлрд╝рд╛рдЗрд▓ рдПрдХ рд╕реНрддрд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╣рд╛рдпрдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдорд▓реНрдЯреАрдереНрд░реЗрдбреЗрдб рдЦреЛрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдХрд╛ рдкреНрд░рдорд╛рдг рднреА рдХрдИ рд╕рдлрд▓ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рдЙрддреНрдкрд╛рджреЛрдВ рдореЗрдВ рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред рдореИрдВ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рд╕рдВрднрд╡ рд╣реИрдВ, рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВред

рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдиреАрдореЗрд╢рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ:



рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ? рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдкреВрд░рд╛ рд╕рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐:

  1. рдкрд╣рд▓реА рдзрд╛рд░рд╛ рдЬрдбрд╝ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдкреЗрдбрд╝ рдХреЛ "рдЕрддреНрдпрдзрд┐рдХ рдмрд╛рдПрдВ" рдорд╛рд░реНрдЧ, рдпрд╛рдиреА рдкреВрд░реА рдЧрд╣рд░рд╛рдИ рддрдХ рдмрд╛рдИрдкрд╛рд╕ рдХрд░рддреА рд╣реИ рдЕрдВрджрд░ рдХреА рдУрд░ рдмрдврд╝рдиреЗ рдкрд░ рд╣рдореЗрд╢рд╛ рдмрд╛рдИрдВ рдУрд░ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛ рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рд╣рдореЗрд╢рд╛ рдЕрдВрддрд┐рдо рдмрдЪреНрдЪреЗ рдХреЗ рдиреЛрдб рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИред
  2. рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ, рдкрд╣рд▓рд╛ рдзрд╛рдЧрд╛ рд╕рднреА рд▓рд╛рдкрддрд╛ рдмрдЪреНрдЪреЗ рдиреЛрдбреНрд╕ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрддрд╛рд░ (рдпрд╛ рд╕реНрдЯреИрдХ) рдкрд░ рднреЗрдЬрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдПрдХ рдФрд░ рдзрд╛рдЧрд╛ рдЙрдиреНрд╣реЗрдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ, рдХрддрд╛рд░ рдпрд╛ рд╕реНрдЯреИрдХ рдХреЛ рдПрдХ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рджреЛрд╣рд░рд╛рддрд╛ рд╣реИ, рд░реВрдЯ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдмрд╕ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдиреЛрдб рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред

    рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ (рдПрдХ рд░рдВрдЧ - рдПрдХ рдзрд╛рдЧрд╛):

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ (рдПрдХ рд░рдВрдЧ - рдПрдХ рдзрд╛рдЧрд╛):


рдЬрд╛рд╡рд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рдореИрдВ рдПрдХ рдРрд╕реЗ рдХреЛрдб рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реВрдВ рдЬреЛ рдХрд┐рд╕реА рдХреЗ рдХрд╛рдо рдЖ рд╕рдХрддрд╛ рд╣реИ, рдореИрдВрдиреЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЙрд╕реЗ рдЦреЛрдЬрд╛, рд▓реЗрдХрд┐рди рд╡рд╣ рдирд╣реАрдВ рдорд┐рд▓рд╛:

import java.io.File; import java.util.concurrent.BlockingQueue; import java.util.concurrent.Executor; import java.util.concurrent.Executors; import java.util.concurrent.LinkedBlockingDeque; public class MultiThreadTreeWalker extends Thread { private static BlockingQueue<File> nodesToReview = new LinkedBlockingDeque<>(); private File f; public MultiThreadTreeWalker(File f) { this.f = f; } public MultiThreadTreeWalker() { } public static void main(String[] args) { Executor ex = Executors.newFixedThreadPool(2); MultiThreadTreeWalker mw = new MultiThreadTreeWalker(new File("C:\\")); mw.run(); for (int i = 0;i<2;i++) { ex.execute(new MultiThreadTreeWalker()); } } @Override public void run() { if (f != null) { //    reviewFileSystem(f); } else { try { while (true) { f = nodesToReview.take(); reviewFileSystem(f); } } catch (InterruptedException e) { e.printStackTrace(); } } } void reviewFileSystem(File f) { if (f == null) { return; } if (f.isFile()) { //  (+ ) System.out.println(" " + f.getName() + "   " + Thread.currentThread()); return; } File[] files = f.listFiles(); if (files.length != 0) { for (int i = 0; i < files.length - 1; i++) { nodesToReview.add(files[i]); //     } //       File last = files[files.length - 1]; reviewFileSystem(last); } } } 

рдирд┐рд╖реНрдХрд░реНрд╖


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд╛рд╡рд╛ рдореЗрдВ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЛ рдмреНрд▓реЙрдХрд┐рдВрдЧ рдХреНрдпреВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдлреА рд╕рд░рд▓рддрд╛ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдЬреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛ рддрдХ рдХрдИ рдереНрд░реЗрдбреНрд╕ рдХреА рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╡реГрдХреНрд╖реЛрдВ рдХреА рдХрдЯрд╛рдИ рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдпрд╛ рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдореИрдВ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЧреБрд░реБ рдХреА рд░рд╛рдп рд╕реБрдирдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдкреНрд░рд╢реНрди, рдЗрдЪреНрдЫрд╛рдПрдВ рд▓рд┐рдЦреЗрдВред

GitHub рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВ ред рдкрд╛рд╕ рдореЗрдВ рдПрдХ рдЬрд╛рд╡рд╛рдПрдлрдПрдХреНрд╕ рдЦреЛрдЬ рдЗрдВрдЬрди рднреА рд╣реИ, рдЕрдЧрд░ рдХреЛрдИ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдХреЗрд╡рд▓ рдЦреБрд╢реА рд╣реЛрдЧреАред

Source: https://habr.com/ru/post/hi457042/


All Articles