blog220203.Eclipse runtime之Job
本文以eclipse 4.20为参考.
缘起
org.eclipse.core.runtime.jobs.Job代表的是runnable work. Job构造后, 申请进入调度以执行, 由jobManager负责调度schedule, 安排其执行. IScheduleRuling负责协调多个job并发时的同步问题.
IRunnableContext和IProgressService提供了对progressMonitor的支持.
Job
job具有4态,
- NONE, 起始前和结束后的状态. 此时, job进入调度后, 则goto WAITING.
- WAITING, 排队等待执行的状态. 此时, 若安排执行, 则goto RUNNING; 若sleep或delay, 则goto SLEEPING.
- SLEEPING, 休眠态. 此时, 被唤醒wakeUp, 则重新goto SLEEPING.
- RUNNING, 执行态. 此时, 执行完毕或cancel, 则goto NONE.
注意, job只能从WAITING才能进入SLEEPING, 而RUNNING只能单向去到NONE. 而job是可以重复schedule的.
job创建完毕后, 调用schedule(), 交由JobManager调度执行.