<div>$B6b@.$G$9!#(B</div><div><br></div><div>$B:rF|$4;XE&D:$$$?!"(B</div><div>AbstractPausableTask$B$rMQ$$$?<BAuJ}K!$K4X$7$F!"?tE@3NG'$,$"$j$^$9!#(B</div><div><br></div><div>&gt;&gt;$B%?%9%/(BB$B$O(BAbstractPausableTask$B$r7Q>5$9$k!#(B</div><div><br></div><div>$B$3$N>l9g!"%?%9%/(BB$B$O(B@Task$B$G4IM}$9$k%?%9%/$H$7$F$N<BAu$G$O$J$/$J$k$N$G$7$g$&$+(B($B0z?t$"$j$N%3%s%9%H%i%/%?$r%?%9%/%/%i%9$G@_Dj$7$?>l9g!"(Bs2chronos$BB&$G%(%i!<$H$J$k(B)$B!#(B</div>
<div><br></div><div><br></div><div>&gt;&gt;$B%?%9%/(BA$B$K$"$k(BpauseObject$B$H(Bpause$B$r%?%9%/(BB$B$K@_Dj$9$k!#(B</div><div><br></div><div>pauseObject$B$H(Bpuase$B$N35G0$r!"L@3N$KDO$`$3$H$,=PMh$J$+$C$?$N$G$9$,!"(B</div><div>$B;d$NM}2rITB-$G$"$k$3$H$O>5CN$7$F$*$j$^$9$,!"(B</div><div>$B6qBNE*$K@bL@$7$FD:$1$J$$$G$7$g$&$+!#(B</div><div><br>
</div><div>$B$*<j?t$*3]$1CW$7$^$9$,!"59$7$/$*4j$$CW$7$^$9!#(B</div><div><br></div><br><br><div class="gmail_quote">2009/07/27 18:32 Junichi Kato <span dir="ltr">&lt;<a href="mailto:j5ik2o@gmail.com">j5ik2o@gmail.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
kanari takuma$B$5$s(B<br>
$B2CF#(B(j5ik2o)$B$G$9!#(B<br>
<br>
S2Chronos$B$N$4MxMQ$"$j$,$H$&$4$6$$$^$9!#(B<br>
<br>
$B$5$F!"K\Bj$G$9$,!"8=9THG$N(BS2Chronos$B$G$O%9%1%8%e!<%i$G$N0l;~Dd;_$O2DG=$G$9$,!"%?%9%/%/%i%9C10L$G$N0l;~Dd;_$r%5%]!<%H$7$F$$$^$;$s!#(B<br>
<br>
$B$3$3$+$i$O$4;29M$^$G$K<BAuJ}K!$r=q$+$;$F$$$?$@$-$^$9!#(B<br>
<br>
org.seasar.chronos.core.processor.impl.ScheduleExecuteWaitProcessor$B%/%i%9$r;29M$K$7$F!"$3$N(BdoProcess$B$HF1Ey$N=hM}$r0l;~Dd;_$5$;$?$$%?%9%/Fb$K<BAu$9$l$P2DG=$G$O$J$$$+$H;W$$$^$9!#(B<br>
<br>
$B0J2<$N%3!<%I$O$A$g$C$H=q$$$F$_$?$$$N$G$9$,!"<B:]$KF0$+$7$F$J$$$N$G!"%A%g!<E,Ev$J$s$G$"$F$K$7$J$$$G$/$@$5$$(Bw<br>
<br>
waitProcess$B%a%=%C%I$r%?%9%/%/%i%9$N=hM}Cf$GDj4|E*$K8F$S=P$9$h$&$K$7$F$*$$$F!"(B<br>
pause.set(true)$B$H$9$k$H0l;~Dd;_!"(Bpause.set(false)$B$H$9$k$H:F3+$9$k$H;W$$$^$9!#(B<br>
$B8e!"(BpauseObject.notify()$B$9$k$N$rK:$l$J$$$h$&$K$7$F$/$@$5$$!#(B<br>
<br>
$B$J$N$G!"%?%9%/(BB$B$O(BAbstractPausableTask$B$r7Q>5$9$k!#(B<br>
$B$=$N:]$K%?%9%/(BA$B$K$"$k(BpauseObject$B$H(Bpause$B$r%?%9%/(BB$B$K@_Dj$9$k!#(B<br>
$B%?%9%/(BA$B$G(B<br>
pause.set( ! pause.get() );<br>
pauseObject.notify();<br>
$B$G%?%9%/(BB$B$N0l;~Dd;_$d:F3+$,$G$-$k$H;W$$$^$9!#(B<br>
<br>
$B$4;29M$^$G$K!#(B<br>
<br>
public abstract class AbstractPausableTask&lt;T&gt; {<br>
 &nbsp; &nbsp; &nbsp; &nbsp;/**<br>
 &nbsp; &nbsp; &nbsp; &nbsp; * $B%3%s%9%H%i%/%?$G$9!#(B<br>
 &nbsp; &nbsp; &nbsp; &nbsp; *<br>
 &nbsp; &nbsp; &nbsp; &nbsp; * @param pauseOjbect<br>
 &nbsp; &nbsp; &nbsp; &nbsp; * &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$B0l;~Dd;_MQ%*%V%8%'%/%H(B<br>
 &nbsp; &nbsp; &nbsp; &nbsp; * @param pause<br>
 &nbsp; &nbsp; &nbsp; &nbsp; * &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$B0l;~Dd;_L?Na%U%i%0(B<br>
 &nbsp; &nbsp; &nbsp; &nbsp; */<br>
 &nbsp; &nbsp; &nbsp; &nbsp;protected PausableTask(T pauseOjbect, AtomicBoolean pause) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.pauseOjbect = pauseOjbect;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;}<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;private final T pauseOjbect;<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;/**<br>
 &nbsp; &nbsp; &nbsp; &nbsp; * $B0l;~Dd;_MQ%*%V%8%'%/%H$rJV$7$^$9!#(B<br>
 &nbsp; &nbsp; &nbsp; &nbsp; *<br>
 &nbsp; &nbsp; &nbsp; &nbsp; * @return $B0l;~Dd;_MQ%*%V%8%'%/%H(B<br>
 &nbsp; &nbsp; &nbsp; &nbsp; */<br>
 &nbsp; &nbsp; &nbsp; &nbsp;public T getPauseOjbect() {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return pauseOjbect;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;}<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;private AtomicBoolean pause;<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;/**<br>
 &nbsp; &nbsp; &nbsp; &nbsp; * $B0l;~Dd;_L?Na%U%i%0$rJV$7$^$9!#(B<br>
 &nbsp; &nbsp; &nbsp; &nbsp; *<br>
 &nbsp; &nbsp; &nbsp; &nbsp; * @return $B0l;~Dd;_L?Na%U%i%0(B<br>
 &nbsp; &nbsp; &nbsp; &nbsp; */<br>
 &nbsp; &nbsp; &nbsp; &nbsp;public AtomicBoolean getPause() {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return pause;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;}<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;/**<br>
 &nbsp; &nbsp; &nbsp; &nbsp; * $B0l;~Dd;_L?NaMQ%U%i%0$r@_Dj$7$^$9!#(B<br>
 &nbsp; &nbsp; &nbsp; &nbsp; *<br>
 &nbsp; &nbsp; &nbsp; &nbsp; * @param pause<br>
 &nbsp; &nbsp; &nbsp; &nbsp; * &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$B0l;~Dd;_L?NaMQ%U%i%0(B<br>
 &nbsp; &nbsp; &nbsp; &nbsp; */<br>
 &nbsp; &nbsp; &nbsp; &nbsp;public void setPause(AtomicBoolean pause) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.pause = pause;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;}<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;/**<br>
 &nbsp; &nbsp; &nbsp; &nbsp; * $B0l;~Dd;_>uBV$+$I$&$+$rJV$7$^$9!#(B<br>
 &nbsp; &nbsp; &nbsp; &nbsp; *<br>
 &nbsp; &nbsp; &nbsp; &nbsp; * @return $B0l;~Dd;_>uBV$N>l9g(Btrue<br>
 &nbsp; &nbsp; &nbsp; &nbsp; */<br>
 &nbsp; &nbsp; &nbsp; &nbsp;public AtomicBoolean getPaused() {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return paused;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;}<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;private final AtomicBoolean paused = new AtomicBoolean();<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;protected void waitProcess() {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (pause.get()) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;synchronized (pauseOjbect) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;do {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (this.paused != null) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// $B0l;~Dd;_L?Na$,$"$j0l;~Dd;_Cf$G$J$1$l$P(B<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!paused.get() &amp;&amp; pause.get()) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// $B>uBV%U%i%0$r0l;~Dd;_Cf$K$9$k(B<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.paused.set(true);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pauseOjbect.wait(500L);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} while (pause.get());<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} catch (InterruptedException e) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;throw new RuntimeException(e);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} finally {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (paused != null) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (paused.get()) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;paused.set(false);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp;}<br>
}<br>
<br>
<br>
<br>
<br>
<br>
2009/07/27 16:52 $B$K(B kanari takuma&lt;<a href="mailto:omitmyself.t@gmail.com">omitmyself.t@gmail.com</a>&gt; $B$5$s$O=q$-$^$7$?(B:<br>
<div><div></div><div class="h5">&gt; $B=i$a$F<ALd$5$;$F$$$?$@$-$^$9!#6b@.$H?=$7$^$9!#(B<br>
&gt; $B$*@$OC$K$J$j$^$9!#(B<br>
&gt; S2Chronos$B$G$N%P%C%A=hM}$K4X$7$F<ALd$,$"$j$^$9!#(B<br>
&gt; $BDj;~=hM}%?%9%/(BA(CRON$B%H%j%,$K$F8F$S=P$7(B)$B$H!"(B<br>
&gt; $BITDj4|%?%9%/(BB$B$,:.:_$9$k(BWeb$B%"%W%j%1!<%7%g%sFb$N%P%C%A=hM}$r@=B$$7$F$$$^$9!#(B<br>
&gt; ($BITDj4|%?%9%/(BB$B$O!"@53N$K$O%P%C%A=hM}$G$O$J$/!"%j%/%(%9%H7@5!$G<B9T$5$l$k=hM}$G$9$,!"(B<br>
&gt; $B=hM};~4V$,$+$+$k$?$a!"(BS2Chronos$B$N%?%9%/%/%i%9$H!"FH<+<BAu$N%H%j%,%/%i%9$rMxMQ$7!"%j%/%(%9%H$G%H%j%,$7$F$$$^$9!#(B)<br>
&gt; $B8=:_!"ITDj4|%?%9%/(BB$B<B9TCf$K!"Dj;~%?%9%/(BA$B$,<B9T$5$l$?>l9g!"(B<br>
&gt; $B%?%9%/(BB$B$r0l;~Dd;_$7!"%?%9%/(BA$B$N=hM}=*N;8e!"%?%9%/(BB$B$r:F3+$5$;$k(B(wait, sleep$B$N$h$&$J%$%a!<%8(B)$B=hM}$,2DG=$+$I$&$+8!F$$7$F$$$k$N$G$9$,!"(B<br>
&gt; $B%?%9%/$r0l;~Dd;_$7!":F3+2DG=$J>uBV$rJ];}$9$k$H$$$&=hM}$O!"(BS2Chronos$B$G2DG=$J$N$G$7$g$&$+!#(B<br>
&gt; $B;HMQ$7$F$$$k(BS2Chronos$B$N%P!<%8%g%s$O0J2<$NDL$j$G$9!#(B<br>
&gt; s2chronos-core$B!!!&!&!&(B 1.0.0<br>
&gt; s2chronos-extension$B!!!&!&!&(B 1.0.0<br>
&gt; $B$*<j?t$*3]$1$$$?$7$^$9$,!"$42sEz59$7$/$*4j$$CW$7$^$9!#(B<br>
&gt;<br>
&gt;<br>
</div></div>&gt; _______________________________________________<br>
&gt; Seasar-user mailing list<br>
&gt; <a href="mailto:Seasar-user@ml.seasar.org">Seasar-user@ml.seasar.org</a><br>
&gt; <a href="https://ml.seasar.org/mailman/listinfo/seasar-user" target="_blank">https://ml.seasar.org/mailman/listinfo/seasar-user</a><br>
&gt;<br>
&gt;<br>
<br>
<br>
<br>
--<br>
/**<br>
&nbsp;* name &nbsp;: Junichi Kato<br>
&nbsp;* email : <a href="mailto:j5ik2o@gmail.com">j5ik2o@gmail.com</a><br>
&nbsp;*<br>
&nbsp;* blog &nbsp;: <a href="http://d.hatena.ne.jp/j5ik2o/" target="_blank">http://d.hatena.ne.jp/j5ik2o/</a><br>
&nbsp;*<br>
&nbsp;* commiting projects :<br>
&nbsp;* <a href="http://jiemamy.org/" target="_blank">http://jiemamy.org/</a><br>
&nbsp;* <a href="http://s2chronos.sandbox.seasar.org/" target="_blank">http://s2chronos.sandbox.seasar.org/</a><br>
&nbsp;* <a href="http://s2config.sandbox.seasar.org/" target="_blank">http://s2config.sandbox.seasar.org/</a><br>
&nbsp;*/<br>
_______________________________________________<br>
Seasar-user mailing list<br>
<a href="mailto:Seasar-user@ml.seasar.org">Seasar-user@ml.seasar.org</a><br>
<a href="https://ml.seasar.org/mailman/listinfo/seasar-user" target="_blank">https://ml.seasar.org/mailman/listinfo/seasar-user</a><br>
</blockquote></div><br>