首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解Eclipse工作族

了解Eclipse工作族
EN

Stack Overflow用户
提问于 2016-02-27 08:25:13
回答 1查看 767关注 0票数 0

我正在学习Eclipse,但是我找不到任何关于如何用示例使用家庭类的文档。我正在努力创造三个工作岗位,其中前两个属于同一个家庭,另一个属于不同的家庭。我无法创造一份能指特定家庭的工作。

代码如下:包含职务说明的第一个文件

代码语言:javascript
复制
    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();
    }

提前谢谢。请帮助我理解如何使用家庭控制工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-27 09:31:39

您的Job类必须重写belongsTo方法以定义它们属于哪些家族:

代码语言:javascript
复制
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命名约定--变量名以小写开头。如果做不到这一点,就会使堆栈溢出代码格式化程序(除其他事情外)不舒服。

如果要在不同家庭中运行Job,则必须将家庭传递给作业构造函数。类似于:

代码语言:javascript
复制
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'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35667458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档