了解 Eclipse 作业族
Understanding Eclipse Job Family
我正在学习 Eclipse Job API,但我找不到任何关于如何使用 family class 的文档和示例。我正在尝试创建 3 个工作,其中前两个属于同一个家庭,另一个属于不同的家庭。我无法创建可以指代特定家庭的工作。
代码如下:
第一个包含职位描述的文件
public class Jobsclass{
public static void eclipsejobsfamily() {
Job MyFirstJob = new Job("My First Job") {
protected IStatus run(IProgressMonitor monitor) {
System.out.println("Hello World (1st from a background First job)");
return Status.OK_STATUS;
}
public boolean belongsTo(Object family) {
// TODO Auto-generated method stub
if (Jobsutil.MY_FAMILY.equals(family)) { return true; }
return false;
}
};
Job MySecondJob = new Job("My Second Job") {
protected IStatus run(IProgressMonitor monitor) {
System.out.println("Hello World ( 2nd from a background Second job)");
return Status.OK_STATUS;
}
public boolean belongsTo(Object family) {
// TODO Auto-generated method stub
if (Jobsutil.MY_FAMILY.equals(family)) { return true; }
return false;
}
};
Job MyThirdJob = new Job("My First Job") {
protected IStatus run(IProgressMonitor monitor) {
System.out.println("Hello World (1st from a background First job)");
return Status.OK_STATUS;
}
public boolean belongsTo(Object family) {
// TODO Auto-generated method stub
if (Jobsutil.THE_FAMILY.equals(family)) { return true; }
return false;
}
};
MyFirstJob.wakeUp();
MyFirstJob.schedule();
MySecondJob.setPriority(Job.SHORT);
MySecondJob.schedule();
MyThirdJob.wakeUp();
MyThirdJob.schedule();
}
protected IStatus run(IProgressMonitor monitor) {
// TODO Auto-generated method stub
return null;
}
}
FILE 2:
public class Jobsutil {
public static final String MY_FAMILY = "myJobFamily";
public static final String THE_FAMILY = "theOtherFamily";
}
public JobAction() {
}
THIRD Class Method RUN():
/**
* The action has been activated. The argument of the
* method represents the 'real' action sitting
* in the workbench UI.
* @see IWorkbenchWindowActionDelegate#run
*/
public void run(IAction action) {
MessageDialog.openInformation(
window.getShell(),
"LearnJobAPI",
"First example");
if (Jobsutil.MY_FAMILY.equals("myJobFamily")){
}
//Job.getJobManager().find("MY_FAMILY");
//Job.getJobManager().wakeUp("MY_FAMILY");
// Jobsclass.eclipsejobsfamily();
this.manager.wakeUp(Jobsutil.MY_FAMILY);
Job[] jobscreated= this.manager.find(Jobsutil.MY_FAMILY);
Jobsclass.eclipsejobsfamily();
}
提前致谢。请帮助我了解如何使用家庭控制作业。
您的 Job
类 必须覆盖 belongsTo
方法来定义它们属于哪个系列:
Job myFirstJob = new Job("My First Job") {
@Override
protected IStatus run(IProgressMonitor monitor) {
System.out.println("Hello World (1st from a background First job)");
return Status.OK_STATUS;
}
@Override
public boolean belongsTo(Object family) {
return family == MY_FAMILY;
}
};
注意:您的 wakeUp
呼叫没有任何作用,只需呼叫 schedule
到 运行 工作。
另外请遵循 Java 命名约定 - 变量名以小写字母开头。不这样做会扰乱 Stack Overflow 代码格式化程序(以及其他事情)。
如果您想 运行 不同系列中的 Job
,您必须将系列传递给 Job 构造函数。类似于:
class MyJob extend Job
{
private final Object jobFamily;
MyJob(String name, Object family) {
super(name);
jobFamily = family;
}
@Override
protected IStatus run(IProgressMonitor monitor) {
System.out.println("Hello World (1st from a background First job)");
return Status.OK_STATUS;
}
@Override
public boolean belongsTo(Object family) {
return family == jobFamily;
}
}
Job myFirstJob = new MyJob("My First Job", "A"); // family 'A'
Job myFirstJob = new MyJob("My First Job", "B"); // family 'B'
我正在学习 Eclipse Job API,但我找不到任何关于如何使用 family class 的文档和示例。我正在尝试创建 3 个工作,其中前两个属于同一个家庭,另一个属于不同的家庭。我无法创建可以指代特定家庭的工作。
代码如下: 第一个包含职位描述的文件
public class Jobsclass{
public static void eclipsejobsfamily() {
Job MyFirstJob = new Job("My First Job") {
protected IStatus run(IProgressMonitor monitor) {
System.out.println("Hello World (1st from a background First job)");
return Status.OK_STATUS;
}
public boolean belongsTo(Object family) {
// TODO Auto-generated method stub
if (Jobsutil.MY_FAMILY.equals(family)) { return true; }
return false;
}
};
Job MySecondJob = new Job("My Second Job") {
protected IStatus run(IProgressMonitor monitor) {
System.out.println("Hello World ( 2nd from a background Second job)");
return Status.OK_STATUS;
}
public boolean belongsTo(Object family) {
// TODO Auto-generated method stub
if (Jobsutil.MY_FAMILY.equals(family)) { return true; }
return false;
}
};
Job MyThirdJob = new Job("My First Job") {
protected IStatus run(IProgressMonitor monitor) {
System.out.println("Hello World (1st from a background First job)");
return Status.OK_STATUS;
}
public boolean belongsTo(Object family) {
// TODO Auto-generated method stub
if (Jobsutil.THE_FAMILY.equals(family)) { return true; }
return false;
}
};
MyFirstJob.wakeUp();
MyFirstJob.schedule();
MySecondJob.setPriority(Job.SHORT);
MySecondJob.schedule();
MyThirdJob.wakeUp();
MyThirdJob.schedule();
}
protected IStatus run(IProgressMonitor monitor) {
// TODO Auto-generated method stub
return null;
}
}
FILE 2:
public class Jobsutil {
public static final String MY_FAMILY = "myJobFamily";
public static final String THE_FAMILY = "theOtherFamily";
}
public JobAction() {
}
THIRD Class Method RUN():
/**
* The action has been activated. The argument of the
* method represents the 'real' action sitting
* in the workbench UI.
* @see IWorkbenchWindowActionDelegate#run
*/
public void run(IAction action) {
MessageDialog.openInformation(
window.getShell(),
"LearnJobAPI",
"First example");
if (Jobsutil.MY_FAMILY.equals("myJobFamily")){
}
//Job.getJobManager().find("MY_FAMILY");
//Job.getJobManager().wakeUp("MY_FAMILY");
// Jobsclass.eclipsejobsfamily();
this.manager.wakeUp(Jobsutil.MY_FAMILY);
Job[] jobscreated= this.manager.find(Jobsutil.MY_FAMILY);
Jobsclass.eclipsejobsfamily();
}
提前致谢。请帮助我了解如何使用家庭控制作业。
您的 Job
类 必须覆盖 belongsTo
方法来定义它们属于哪个系列:
Job myFirstJob = new Job("My First Job") {
@Override
protected IStatus run(IProgressMonitor monitor) {
System.out.println("Hello World (1st from a background First job)");
return Status.OK_STATUS;
}
@Override
public boolean belongsTo(Object family) {
return family == MY_FAMILY;
}
};
注意:您的 wakeUp
呼叫没有任何作用,只需呼叫 schedule
到 运行 工作。
另外请遵循 Java 命名约定 - 变量名以小写字母开头。不这样做会扰乱 Stack Overflow 代码格式化程序(以及其他事情)。
如果您想 运行 不同系列中的 Job
,您必须将系列传递给 Job 构造函数。类似于:
class MyJob extend Job
{
private final Object jobFamily;
MyJob(String name, Object family) {
super(name);
jobFamily = family;
}
@Override
protected IStatus run(IProgressMonitor monitor) {
System.out.println("Hello World (1st from a background First job)");
return Status.OK_STATUS;
}
@Override
public boolean belongsTo(Object family) {
return family == jobFamily;
}
}
Job myFirstJob = new MyJob("My First Job", "A"); // family 'A'
Job myFirstJob = new MyJob("My First Job", "B"); // family 'B'