java中Timer类中的setDelay(int delay)方法

Python018

java中Timer类中的setDelay(int delay)方法,第1张

<p>tmr.setDelay(tmr.getDelay()+10)</p><p><br /></p><p>javax.swing.Timer<br /></p><pre t="code" l="java">Timer tmr=new Timer(100, new ActionListener(){<br /> public void actionPerformed(ActionEvent evt){<br /> tmr.setDelay(tmr.getDelay()+50)<br /> System.out.println(new Date())<br /> }<br /> })<br /> tmr.start()</pre>

schedule(TimerTask task, Date firstTime, long period)。

安排指定的任务在指定的时间开始进行重复的固定延迟执行。以近似固定的时间间隔(由指定的周期分隔)进行后续执行。

参数:

task - 所要安排的任务。

firstTime - 首次执行任务的时间。

period - 执行各后续任务之间的时间间隔,单位是毫秒。

才学RxJava的时候还是挺困惑的,感觉有特别多的对『时间』的操作符,比如timer()、interval()、delay()、defer()等等……

总之功能太强大,直接吓跑了一群初学者。身边有朋友这样跟我说:

RxJava为了省点代码,把逻辑弄这么复杂,看着都晕了,我宁愿多写点 if-else

我只能回复:用RxJava逻辑肯定是变简单了,一旦用上手了,再也离不开了。现在让我写个Thread + Handler我都觉得麻烦。

timer()

这里说的是新版本的timer(),而老版本的timer()已经跟interval()合并了。

timer():创建一个Observable,它在一个给定的延迟后发射一个特殊的值

这里需要注意,定义里面说的是『一个』,所以有别于之前用的TimerTask。timer()只是用来创建一个Observable,并延迟发送一次的操作符,timer()并不会按周期执行。

interval()

interval():创建一个按固定时间间隔发射整数序列的Observable

这个比较好理解,interval()也是用来创建Observable的,并且也可以延迟发送。但interval()是按周期执行的,所以可以这么认为:interval()是一个可以指定线程的TimerTask(威力加强版……)

delay()

delay():延迟一段指定的时间再发送来自Observable的发送结果

语文没学好肯定读不懂这一段,我才看到这句话的时候也懵了……

其实delay()的常规使用跟timer()一致,那区别在哪呢?delay()是用于流中的操作,跟map()、flatMap()的级别是一样的。而timer()是用于创建Observable,跟just()、from()的级别是一样的。

总结

timer():用于创建Observable,延迟发送一次。

interval():用于创建Observable,跟TimerTask类似,用于周期性发送。

delay():用于事件流中,可以延迟发送事件流中的某一次发送。

网络连接失败的处理

看过最前面那篇文章的应该很清楚retryWhen()是什么了。

我再来总结一下,retryWhen()的直面意思就是:发生错误了,接下来该做什么。

retryWhen()是RxJava的一种错误处理机制,当遇到错误时,将错误传递给另一个Observable来决定是否要重新给订阅这个Observable