Kuten on jo havaittu, työtilan koodissa on huomioitava samanaikaisuus, vaikka siinä ei käytettäisi samanaikaisuuden kehystä. Työtilan muutosten eräajo ja ajoitussääntöjen käyttö helpottavat työtilan yhteiskäyttöä muiden työtilaa muokkaavien lisäosien (ja niiden säikeiden) kanssa. Kun lisäosa käyttää eräajoa ja sääntöjä (katso Resurssimuutosten eräajo), on helppoa toteuttaa samat työt ympäristön samanaikaisuusmekanismien avulla.
Työ on samanaikaisesti muiden töiden kanssa ajossa olevan asynkronisen työn perusyksikkö. Resurssilisäosa määrittää kohteen WorkspaceJob käteväksi keinoksi määrittää asynkronisten resurssien muutoksia. Normaalisti kohteessa IWorkspaceRunnable eräajossa olevaa koodia voi sijoittaa työtilan työn alilajin runInWorkspace-metodiin. Sen sijaan, että koodi ajettaisiin IWorkspace-käytännön avulla, työ ajoitetaan kuin mikä tahansa työ. Työhön on lisättävä oikeat ajoitussäännöt, ennen kuin se ajoitetaan.
Seuraavaksi tarkastellaan esimerkkiä työtilan ajettavasta kohteesta (runnable) ja siitä, kuinka siitä tehdään työ:
IWorkspaceRunnable myRunnable = new IWorkspaceRunnable() { public void run(IProgressMonitor monitor) throws CoreException { //tee varsinainen työ tässä doSomeWork(); ... } }
Työ siirretään WorkspaceJob-alilajin asianmukaiseen metodiin.
class MyWorkspaceJob extends WorkspaceJob { public MyWorkspaceJob() { super("My Workspace Job"); } public IStatus runInWorkspace(IProgressMonitor monitor) { //tee varsinainen työ tässä doSomeWork(); return Status.OK_STATUS; } }
Ajettava kohde on kutsuttava erikseen:
IWorkspace workspace = ResourcesPlugin.getWorkspace(); workspace.run(myRunnable, myProject, IWorkspace.AVOID_UPDATE, null);
Työ ajoitetaan kuin mikä tahansa työ. Ympäristön töiden hallintaohjelma ajaa sen sen prioriteetin, muiden jonossa olevien töiden ja sen ajoitussääntöjen mukaan. Huomaa, että ajoitussääntö on liitettävä työhön, jotta myProject-kohteen samanaikainen muokkaus voidaan estää.
MyWorkspaceJob job = new MyWorkspaceJob(); job.setRule(myProject); job.schedule();
Toiminnosta on nyt muodostettu työ, joten voit käyttää kaikkia ajoituskeinoja (prioriteetti, viive, uudelleenajoitus). Resurssien muutostapahtumat ajetaan eräajona, kunnes työ on ajettu valmiiksi.