Я учу Scala.Я читаю программу Scala:
class MyProg() extends StrictLogging with Runnable {
private val scheduledFuture = new AtomicReference[ScheduledFuture[_]]
def start() = {
scheduledFuture.set(executor.scheduleWithFixedDelay(this, initialDelaySeconds, intervalSeconds, TimeUnit.SECONDS))
}
def stop() = {
Option(scheduledFuture.get()).map(_.cancel(true))
}
override def run() = try {
process()
} catch {
case e: Exception => logger.warn("Error", e)
}
def process() :Unit {
// do something
if (condition) return // Line 203
// do something else
}
}
Еще один фрагмент кода для запуска Runnable
:
Option(myProg).map(_.start)
Мои вопросы:
1, это правильновернуться изнутри Runnable
?process()
планируется запускать каждые intervalSeconds
секунды.даже иногда process()
возвращается изнутри, он все равно будет называться intervalSeconds
секунд спустя.Я прав?
2, мы можем использовать System.exit(0)
или throw new Exception("...")
здесь?После вызова System.exit(0)
или throw new Exception("...")
, process()
будет снова вызываться ?
3, кстати, почему def process() :Unit {}
?Можем ли мы использовать def process() :Unit = {}
Любые комментарии приветствуются.Спасибо