
"рд╣рд╛рдп, рдЕрдореАрдЧреЛ!"
"рдХреБрдЫ рднреА рд╕рд╣реА рдирд╣реАрдВ рд╣реИ рдЬрдм рдЗрд╕реЗ рдкрд╣рд▓реА рдмрд╛рд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдереНрд░реЗрдбреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдпрд╣реА рд╕рдЪ рд╣реИред рд╕рдордп рдХреЗ рд╕рд╛рде, рдЬрд╛рд╡рд╛ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рд░рдирдиреЗрдмрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рдХрдорд┐рдпреЛрдВ рдХреЗ рдкреНрд░рддрд┐ рдЖрд╢реНрд╡рд╕реНрдд рд╣реЛ рдЧрдПред рдпрд╣ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдлреЗрдВрдХрдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛ рдФрд░ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛ред рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо ..."
"рд░рдирдиреЗрдмрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЫреЛрдЯреЗ рдЙрдк-рдХрд╛рд░реНрдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрдбрд╝реЗ рд╕реНрд╡рддрдВрддреНрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдПрдХ рд╕рдордп рдореЗрдВ рдПрдХ рджрд░реНрдЬрди рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЙрдирдХреЗ рдкрд░рд┐рдгрд╛рдо рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВред"
"рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдХреЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рд░рдирдиреЗрдмрд▓ рдФрд░ рдереНрд░реЗрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЫреЛрдЯреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдЕрдиреБрдХреВрд▓ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИред"
"рдпрд╣рд╛рдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ:"
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();
}
}
" рд░рдирдиреЗрдмрд▓ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣рд╛рдВ рд╣рдореЗрдВ рдХреЙрд▓ рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдЯрд╛рдЗрдк рддрд░реНрдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд░рдирдиреЗрдмрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рд░рди рд╡рд┐рдзрд┐ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдЬреЛ рд╢реВрдиреНрдп рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдХрднреА-рдХрднреА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╕рд╛рде рдЖрдирд╛ рдкрдбрд╝рддрд╛ рдерд╛ред рдереНрд░реЗрдб рдХреЗ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдбред"
"рдЕрдЪреНрдЫрд╛ рдРрд╕рд╛ рд╣реИред"
"рдФрд░ рдЕрдм рджреЗрдЦреЗрдВ рдХрд┐ рдХреЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдереНрд░реЗрдбрдкреВрд▓ рдПрдХреНрдЬрд╝реАрдХреНрдпреВрдЯрд░ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
"рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдереНрд░реЗрдбрдкреВрд▓ рдПрдХреНрдЬрд╝реАрдХреНрдпреВрдЯрд░ рдХреНрд▓рд╛рд╕ рдХреА рд╕рдмрдорд┐рдЯ рд╡рд┐рдзрд┐ рдПрдХ рдкреИрд░рд╛рдорд┐рдЯреНрд░реАрдХреГрдд рдлреНрдпреВрдЪрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реМрдЯрд╛рддреА рд╣реИред рдЖрдк рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдХрд╛рд░реНрдп рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред"
"рдпрд╣ рдРрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:"
// 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();
"рдмрд╣реБрдд рджреВрд░! рдореБрдЭреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдлреНрдпреВрдЪрд░ рдХреНрд▓рд╛рд╕ рдкрд╕рдВрдж рд╣реИред рдЗрд╕рдХреЗ рдХреНрдпрд╛ рддрд░реАрдХреЗ рд╣реИрдВ?"
"рдпрд╣рд╛рдБ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИрдВ:"
рддрд░реАрдХрд╛ | рд╡рд┐рд╡рд░рдг |
---|---|
|
рдХрд╛рд░реНрдп рдХреЛ рд░реЛрдХрддрд╛ рд╣реИред |
|
рдХрд╛рд░реНрдп рд░реЛрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рд╕рдЪ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред |
|
рдпрджрд┐ рдХрд╛рд░реНрдп рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рддреЛ рд╕рддреНрдп рд▓реМрдЯрд╛рддрд╛ рд╣реИред |
|
рдХреЙрд▓ рд╡рд┐рдзрд┐ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдпрд╛ рдпрджрд┐ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рд╣реЛрддрд╛ рд╣реИ рддреЛ рдЙрд╕реЗ рдлреЗрдВрдХ рджреЗрддрд╛ рд╣реИред |
"рдЕрдЪреНрдЫрд╛! рддреЛ рдЖрдк рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд░реЛрдХ рднреА рд╕рдХрддреЗ рд╣реИрдВред"
"рдЗрд╕ рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рднрд░реЛрд╕рд╛ рди рдХрд░реЗрдВтАФрд╣рд░ рдереНрд░реЗрдб рд░реБрдХ рдирд╣реАрдВ рд╕рдХрддрд╛ред рд▓реЗрдХрд┐рди рдпрджрд┐ рдХреЛрдИ рдХрд╛рд░реНрдп рдЕрднреА рднреА рдХрддрд╛рд░ рдореЗрдВ рд╣реИ, рддреЛ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред"
"рдореБрдЭреЗ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд╕рдВрдж рд╣реИред рдпрд╣ рд╕реНрд╡рдпрдВ рдзрд╛рдЧреЗ рдмрдирд╛рдиреЗ рдФрд░ рдлрд┐рд░ рдЙрдирдореЗрдВ рд╕реЗ рдкрд░рд┐рдгрд╛рдо рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред"
"рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ред рдЖрдЬ рдХрд╛ рдЕрдВрдд рдпрд╣реАрдВ рдкрд░ рд╣реЛрдЧрд╛ред"