рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рдзрд┐ рд╣реИ рдЬрд┐рд╕реЗ рдХрдИ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЬрд┐рд╕рдХреА рдХреЙрд▓ рдЖрдк рд╕рдорд╛рдирд╛рдВрддрд░ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рд╡рд┐рдзрд┐ рдордВрдЧрд▓рд╛рдЪрд░рдг рдХреЛрдб рдФрд░ рд╕реНрд╡рдпрдВ рд╡рд┐рдзрд┐ рдХреЛрдб рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдПрдиреНрдХреНрд▓реЛрдЬрд╝рд┐рдВрдЧ рдХреНрд▓рд╛рд╕ рдХрд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдирд╛рдирд╛ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдмрджрд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдпрд╣ рдерд╛:
class Service { public void longJob(Object arg) {...} } ... Service s=new Service(); ... s.longJob(arg);
рдпрд╣ рдмрди рдЧрдпрд╛:
class Service { public void longJob(Object arg) {...} } class ServiceWrapper extends Service { ... } ... Service s=new ServiceWrapper() ; ... s.longJob(arg);
рдореБрдЦреНрдп рд╢реЛрдзрди рдореЗрдВ рд╕рдорд╛рдирд╛рдВрддрд░ рд╡рд┐рдзрд┐ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
class ServiceWrapper extends Service { SerialExecutor executor=new SerialExecutor(trueExecutor); public void longJob(final Object arg) { executor.execute(new Runnable() { public void run() { ServiceWrapper.super.longJob(arg); } }); } }
SerialExecutor рдХреЛ
java.util.concurrent.Executor рдкрд░ рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдиреБрдХреВрд▓рд┐рдд рд╡рд┐рдХрд▓реНрдк рдореЗрд░реЗ
github.com/rfqu/CodeSamples рдореЗрдВ рд╣реИ ред рдпрд╣ рдЗрд╕реЗ рджрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ longJob () рд╡рд┐рдзрд┐ рдореЗрдВ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИ: рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рд╕рднреА рдХреЙрд▓ рдмрджрд▓реЗ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдВрдЧреЗред рдпрджрд┐ рд╕реЗрд╡рд╛ рд╡рд░реНрдЧ рдореЗрдВ рдХрдИ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реИрдВ, рддреЛ рдЙрди рд╕рднреА рдХреЛ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЙрди рд╕рднреА рдХреЛ рдХреНрд░рдордмрджреНрдз рд░реВрдк рд╕реЗ, рдПрдХ рдХрддрд╛рд░ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдмреЗрд╢рдХ, рдпрд╣ рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдФрд░ рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрдбрд╝реЗ рд╕рдВрдкрд╛рджрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдпрджрд┐ рд╡рд┐рдзрд┐ рдПрдХ рдорд╛рди рд▓реМрдЯрд╛рддреА рд╣реИ, рдпрд╛ рдпрджрд┐ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рдзрд┐ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдорд╛рдирд╛рдВрддрд░ рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИред
рд░рд┐рдбрд┐рдлрд╛рдЗрдирдореЗрдВрдЯ рдХрд╛ рд╡рд┐рдЪрд╛рд░
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд▓реЛрдореНрдмреЛрдХ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред