- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我如何告诉 Eclipse RCP 作业管理最多同时运行 x 个作业?
编辑:
它通过使用答案中描述的自定义调度规则来工作。
重要的是永远不要将相同的规则引用传递给多个作业。
这是我使用的类:
公共(public)类 JobMaster {
private class Listener implements IJobChangeListener {
@Override
public void aboutToRun(final IJobChangeEvent event) {
}
@Override
public void awake(final IJobChangeEvent event) {
}
@Override
public void done(final IJobChangeEvent event) {
synchronized (JobMaster.this) {
running--;
System.err.println("now running " + running);
}
}
@Override
public void running(final IJobChangeEvent event) {
synchronized (JobMaster.this) {
running++;
System.err.println("now running " + running);
}
}
@Override
public void scheduled(final IJobChangeEvent event) {
}
@Override
public void sleeping(final IJobChangeEvent event) {
}
}
private class MyRule implements ISchedulingRule {
public MyRule() {
}
@Override
public boolean contains(final ISchedulingRule rule) {
if (rule == this) {
return true;
}
return false;
}
@Override
public boolean isConflicting(final ISchedulingRule rule) {
synchronized (JobMaster.this) {
if (rule == this) {
return true;
}
if (rule instanceof MyRule) {
return running >= maxRun;
}
return false;
}
}
}
private final Listener l = new Listener();
private final int maxRun;
private volatile int running = 0;
public JobMaster(final int maxRun) {
this.maxRun = maxRun;
}
public synchronized void add(final Job j) {
j.setRule(new MyRule());
j.addJobChangeListener(l);
j.schedule();
}
最佳答案
从 Eclipse Mars (4.5) 开始,可以使用作业组来限制并发线程数:
JobGroup jobGroup = new JobGroup("Job...", /* maxThreads*/ 10, /* seedJobsCount */ 100);
for (int ii = 0; ii < 100; ii++)
{
Job job = new Job("job name")
{
@Override
protected IStatus run(IProgressMonitor monitor)
{
// do something
return Status.OK_STATUS;
}
};
job.setJobGroup(jobGroup);
job.schedule();
}
jobGroup.join(10000, monitor);
关于java - Eclipse RCP IJob : Limit numer of concurrent executing jobs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23007517/
我使用的是 Unity 2018.3.14。我正在尝试创建一个 IJob。 我是这样称呼新工作的: var Job = new IncomingDataTCPJob { worldServer
我在使用 Quartz.net 时遇到了问题。 IJob 有限制,这个对象必须通过无参数构造函数来构建。 但是我需要将它们与参数一起使用。 我可以从已经实例化的 IJob 类创建工作实例吗? 我使用w
我发现不能将具体对象列表添加到接口(interface)对象列表中。 public static void AddJob(List masterJobs, List jobs) { maste
我在 Windows 服务中使用 Quartz.Net 来处理我将要运行的各种作业的调度。这些作业存在于数据库中,每个作业都由单独类库中的工厂方法处理。 我想防止调度程序一次运行超过 1 个作业,但是
我正在使用 Quartz .NET 开发简单的调度程序。我想让 Quartz 保留数据库中的所有作业和触发器,所以我设置了 AdoJobStore 并使用“正常”作业,它工作正常。 现在,我在从数据库
我正在从事 asp.net MVC 4 项目。我写了一个名为“AppStartPushNotificationJob”的工作,并在 Global.asax.cs 的 Application_Start
我如何告诉 Eclipse RCP 作业管理最多同时运行 x 个作业? 编辑: 它通过使用答案中描述的自定义调度规则来工作。 重要的是永远不要将相同的规则引用传递给多个作业。 这是我使用的类: 公共(
我想包含一个 Timer 来调用我的 IJob 的超时方法。由于 Timer 是一次性的,我让我的 IJob 实现了 IDispose,但我不确定在哪里调用 Dispose(),因为 IJob 的创建
我是一名优秀的程序员,十分优秀!