/ / eclipse monitor postupu rcp-java, indikátor priebehu, zatmenie-rcp, úlohy

Monitor priebehu zatmenia rcp - java, indikátor priebehu, zatmenie rcp, úlohy

Na vytvorenie úlohy používam triedu Job a na zobrazenie postupu v zobrazení priebehu používam monitor postupu.

    Job createNewJobRun(final int i, final Job previousJob) {
Job job = new Job("Test Job " + i) {
@Override
protected IStatus run(IProgressMonitor monitor) {
monitor.beginTask("Job is running", 100); //$NON-NLS-1$

if (previousJob != null) {
try {
previousJob.join();

} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
// do the real work
monitor.done();
return Status.OK_STATUS;
}
};

job.schedule();
return job;

}

Nechcem vykonávať úlohy paralelne, alepostupne, ako môžem inicializovať úlohy v zobrazení priebehu, aby som ukázal, že sa spustí po dokončení predchádzajúceho. Vyššie uvedený kód len čaká na predchádzajúci, takže sa po druhej úlohe zablokuje a nezobrazia sa žiadne ukazovatele priebehu ...

odpovede:

3 pre odpoveď č. 1

Pravidlo plánovania by malo vyzerať takto:

   public class MutexRule implements ISchedulingRule {
public boolean isConflicting(ISchedulingRule rule) {
return rule == this;
}
public boolean contains(ISchedulingRule rule) {
return rule == this;
}
}

nastavenie pravidiel a plánovania:

   Job job1 = new SampleJob();
Job job2 = new SampleJob();
MutexRule rule = new MutexRule();
job1.setRule(rule);
job2.setRule(rule);
job1.schedule();
job2.schedule()

zdroj: Eclipse Wiki: Časté otázky Ako zabránim spusteniu dvoch úloh súčasne?


2 pre odpoveď č. 2

Musíte sa pozrieť na pravidlá plánovania v Eclipse Jobs.

To by malo pomôcť. http://www.eclipse.org/articles/Article-Concurrency/jobs-api.html


0 pre odpoveď č. 3

Možným riešením je použiť pravidlá plánovania navrhnuté spoločnosťou @TomSeidel a @SambiReddy, ale toto riešenie má množstvo obmedzení.

Zvlášť to funguje iba vtedy, ak to neurobítenaplánujte viacero nových úloh pred dokončením všetkých predchádzajúcich úloh, pretože bežne používané pravidlá plánovania nemajú žiadnu koncepciu postupnosti. Toto je možné opraviť, aj keď výsledok je zvyčajne dosť ťažké udržať.

Nepíšete nič o zamestnaniachotázka, ale ak hovoríme o opakovaní tej istej práce znova a znova, potom je jednoduchým riešením preplánovanie práce (tesne) pred dokončením.

Job job = new Job("Test Job " + i) {
@Override
protected IStatus run(IProgressMonitor monitor) {
monitor.beginTask("Job is running", 100); //$NON-NLS-1$

// do the real work
monitor.done();

schedule(...);
return Status.OK_STATUS;
}
};

job.schedule();