рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯрд░, рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯрд░ рд╕рд░реНрд╡реНрд╣рд┐рд╕, рдПрдХреНрдЭрд┐рдХреНрдпреВрдЯрд░ - рез

"рд╣рд╛рдп, рдЕрдорд┐рдЧреЛ!"

"рдЬреЗрд╡реНрд╣рд╛ рддреЗ рдкрд╣рд┐рд▓реНрдпрд╛рдВрджрд╛ рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЬрд╛рддреЗ рддреЗрд╡реНрд╣рд╛ рдХреЛрдгрддреАрд╣реА рдЧреЛрд╖реНрдЯ рдкрд░рд┐рдкреВрд░реНрдг рдирд╕рддреЗ. рдереНрд░реЗрдбреНрд╕рдЪреНрдпрд╛ рдмрд╛рдмрддреАрддрд╣реА рд╣реЗрдЪ рдЦрд░реЗ рдЖрд╣реЗ. рдХрд╛рд▓рд╛рдВрддрд░рд╛рдиреЗ, Java рдЪреНрдпрд╛ рдирд┐рд░реНрдорд╛рддреНрдпрд╛рдВрдирд╛ рд░рди рдХрд░рдгреНрдпрд╛рдпреЛрдЧреНрдп рдЗрдВрдЯрд░рдлреЗрд╕рдЪреНрдпрд╛ рдХрдорддрд░рддрд╛рдВрдмрджреНрджрд▓ рдЦрд╛рддреНрд░реА рдкрдЯрд▓реА. рддреЗ рдереНрд░реЛрдЗрдВрдЧ рдЕрдкрд╡рд╛рджрд╛рдВрдирд╛ рд╕рдорд░реНрдерди рджреЗрдд рдирд╛рд╣реА рдЖрдгрд┐ рддреЗ рд╢реЛрдзрдгреЗ рд╢рдХреНрдп рдЭрд╛рд▓реЗ рдирд╛рд╣реА. рдХрд╛рд░реНрдпреЗ рдкреВрд░реНрдг рдХреЗрд▓реНрдпрд╛рдЪреЗ рдкрд░рд┐рдгрд╛рдо..."

"рддреБрдореНрд╣реА рдПрдХрд╛рд╡реЗрд│реА рдбрдЭрдирднрд░ рдЪрд╛рд▓рд╡реВ рдЗрдЪреНрдЫрд┐рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдЫреЛрдЯреНрдпрд╛ рд╕рдмрдЯрд╛рд╕реНрдХрдкреЗрдХреНрд╖рд╛ рдореЛрдареНрдпрд╛ рд╕реНрд╡рддрдВрддреНрд░ рдХрд╛рд░реНрдпрд╛рдВрд╕рд╛рдареА рд░рди рдХрд░рдгреНрдпрд╛рдпреЛрдЧреНрдп рдЗрдВрдЯрд░рдлреЗрд╕ рдЕрдзрд┐рдХ рдпреЛрдЧреНрдп рдЖрд╣реЗ рдЖрдгрд┐ рдирдВрддрд░ рддреНрдпрд╛рдВрдЪреЗ рдкрд░рд┐рдгрд╛рдо рд╕рдВрдХрд▓рд┐рдд рдХрд░рд╛."

"рдореНрд╣рдгреВрдирдЪ рдХреЙрд▓ рдХрд░рдгреНрдпрд╛рдпреЛрдЧреНрдп рдЗрдВрдЯрд░рдлреЗрд╕рдЪрд╛ рд╢реЛрдз рд▓рд╛рд╡рд▓рд╛ рдЧреЗрд▓рд╛. рд░рди рдХрд░рдгреНрдпрд╛рдпреЛрдЧреНрдп рдЖрдгрд┐ рдереНрд░реЗрдбрдкреЗрдХреНрд╖рд╛ рд▓рд╣рд╛рди рдХрд╛рд░реНрдпрд╛рдВрдЪреНрдпрд╛ рд╕рдорд╛рдВрддрд░ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрд╕рд╛рдареА рддреЗ рдЕрдзрд┐рдХ рдЕрдиреБрдХреВрд▓ рдЖрд╣реЗ , рдХрд╛рд░рдг рддреЛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЗрдВрдЯрд░рдлреЗрд╕ рдЖрд╣реЗ."

"рдЗрдВрдЯрд░рдлреЗрд╕рдЪреА рдпреЗрдереЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЖрд╣реЗ:"

рдЙрджрд╛рд╣рд░рдг
class ReverseString implements Callable<String>
{
 String str;

 ReverseString(String str)
 {
  this.str = str;
 }

 public String call() throws Exception
 {
  StringBuilder builder = new StringBuilder(str);
  builder.reverse();
  return builder.toString();
 }
}

" рд░рдирдиреЗрдмрд▓рдЪреНрдпрд╛ рд╡рд┐рдкрд░реАрдд, рдпреЗрдереЗ рдЖрдореНрд╣рд╛рд▓рд╛ рдХреЙрд▓ рдкрджреНрдзрдд рдУрд╡реНрд╣рд░рд░рд╛рдЗрдб рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдЬреА рдЯрд╛рдЗрдк рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯрджреНрд╡рд╛рд░реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреНрд░рдХрд╛рд░рд╛рдЪрд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрддреЗ. рд╣рд╛ рджреГрд╖реНрдЯреАрдХреЛрди рд░рдирдиреЗрдмрд▓ рдЗрдВрдЯрд░рдлреЗрд╕рдЪреНрдпрд╛ рд░рди рдкрджреНрдзрддреАрдкреЗрдХреНрд╖рд╛ рдЕрдзрд┐рдХ рд╕реЛрдпреАрд╕реНрдХрд░ рдЖрд╣реЗ, рдЬреЛ рд╢реВрдиреНрдп рдкрд░рдд рдХрд░рддреЛ. рдереНрд░реЗрдбрдЪрд╛ рдирд┐рдХрд╛рд▓ рдорд┐рд│рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд┐рд╡рд┐рдз рдЙрдкрд╛рдп."

"рдореА рдмрдШрддреЛ."

"рдЖрдгрд┐ рдЖрддрд╛ рдХреЙрд▓реЗрдмрд▓ ThreadPoolExecutor рд╕рд╣ рдПрдХрддреНрд░ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░реВ рд╢рдХрддреЗ рддреЗ рдкрд╣рд╛ :

"рдкреНрд░рдердо, ThreadPoolExecutor рд╡рд░реНрдЧрд╛рдЪреА рд╕рдмрдорд┐рдЯ рдкрджреНрдзрдд рдкреЕрд░рд╛рдореАрдЯрд░рд╛рдЗрдЬреНрдб рдлреНрдпреВрдЪрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдорд┐рд│рд╡рддреЗ. рдПрдЦрд╛рджреЗ рдХрд╛рд░реНрдп рдкреВрд░реНрдг рдЭрд╛рд▓реЗ рдХреА рдирд╛рд╣реА рд╣реЗ рд╢реЛрдзрдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдирд┐рдХрд╛рд▓ рдорд┐рд│рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣реА рдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВ рд╢рдХрддрд╛."

"рд╣реЗ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рддреЗ рдпреЗрдереЗ рдЖрд╣реЗ:"

рдЙрджрд╛рд╣рд░рдг
// 1. Create a ThreadPoolExecutor
ExecutorService service = Executors.newFixedThreadPool(5);

// 2. Add a task to it
Future<String> task = service.submit(new ReverseString("Amigo"));

// 3. Wait until the task is done
while(!task.isDone())
{
 Thread.sleep(1);
}

// 4. Try to get the result
//We will get either the result, or an exception if one occurred while the task was being executed
try
{
 System.out.println("Full string : " + task.get());
}
catch (Exception ie)
{
 ie.printStackTrace(System.err);
}

// 5. Stop the ThreadPool.
service.shutdown();

"рдлрд╛рд░ рджреВрд░! рдорд▓рд╛ рд╡рд┐рд╢реЗрд╖рдд: рдлреНрдпреБрдЪрд░ рдХреНрд▓рд╛рд╕ рдЖрд╡рдбрддреЛ. рддреНрдпрд╛рдд рдХреЛрдгрддреНрдпрд╛ рдкрджреНрдзрддреА рдЖрд╣реЗрдд?"

"рдпреЗрдереЗ рд╕рд░реНрд╡рд╛рдд рдордиреЛрд░рдВрдЬрдХ рдЖрд╣реЗрдд:"

рдкрджреНрдзрдд рд╡рд░реНрдгрди
boolean cancel(boolean mayInterrupt);
рдХрд╛рдо рдерд╛рдВрдмрд╡рддреЗ.
boolean isCancelled();
рдХрд╛рд░реНрдп рдерд╛рдВрдмрд╡рд▓реЗ рдЕрд╕рд▓реНрдпрд╛рд╕ рдЦрд░реЗ рдорд┐рд│рд╡рддреЗ.
boolean isDone();
рдХрд╛рд░реНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдд рдЕрд╕рд▓реНрдпрд╛рд╕ рд╕рддреНрдп рдорд┐рд│рд╡рддреЗ.
V get() throws InterruptedException, ExecutionException;
рдХреЙрд▓ рдкрджреНрдзрддреАрдЪрд╛ рдкрд░рд┐рдгрд╛рдо рдорд┐рд│рд╡рддреЛ рдХрд┐рдВрд╡рд╛ рдПрдЦрд╛рджрд╛ рдЕрдкрд╡рд╛рдж рдЖрдврд│рд▓реНрдпрд╛рд╕ рддреЛ рдлреЗрдХрддреЛ.

"рдЫрд╛рди! рдореНрд╣рдгрдЬреЗ рддреБрдореНрд╣реА рдЯрд╛рд╕реНрдХрд╣реА рдерд╛рдВрдмрд╡реВ рд╢рдХрддрд╛."

"рдпрд╛рд╡рд░ рдЬрд╛рд╕реНрдд рд╡рд┐рд╕рдВрдмреВрди рд░рд╛рд╣реВ рдирдХрд╛-рдкреНрд░рддреНрдпреЗрдХ рдзрд╛рдЧрд╛ рдерд╛рдВрдмреВ рд╢рдХрдд рдирд╛рд╣реА. рдкрдг рдПрдЦрд╛рджреЗ рдХрд╛рд░реНрдп рдЕрдЬреВрдирд╣реА рд░рд╛рдВрдЧреЗрдд рдЕрд╕реЗрд▓ рддрд░ рддреЗ рдЪрд╛рдВрдЧрд▓реЗ рдЪрд╛рд▓реЗрд▓."

"рдорд▓рд╛ рд╣рд╛ рджреГрд╖реНрдЯреАрдХреЛрди рдЖрд╡рдбрддреЛ. рд╕реНрд╡рддрдГ рдереНрд░реЗрдб рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрдгрд┐ рдирдВрддрд░ рддреНрдпрд╛рддреВрди рдирд┐рдХрд╛рд▓ рдХрд╛рдврдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рдгреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рд╣реЗ рдЦреВрдк рд╕реЛрдпреАрдЪреЗ рдЖрд╣реЗ."

"рдЫрд╛рди. рдЖрдЬ рдЖрдкрдг рддрд┐рдереЗрдЪ рд╕рдВрдкрд╡реВ."