这个java.execute()方法调用意味着什么?

这个java.execute()方法调用意味着什么?,java,multithreading,applet,Java,Multithreading,Applet,我正在阅读sun java教程,在这里看到了以下页面: 在标题下,“小程序中的线程”我找到了这段代码: //Background task for loading images. SwingWorker worker = (new SwingWorker<ImageIcon[], Object>() { public ImageIcon[] doInBackground() { final ImageIcon[]

我正在阅读sun java教程,在这里看到了以下页面:

在标题下,“小程序中的线程”我找到了这段代码:

   //Background task for loading images.
    SwingWorker worker = (new SwingWorker<ImageIcon[], Object>() {
            public ImageIcon[] doInBackground() {
                final ImageIcon[] innerImgs = new ImageIcon[nimgs];
            ...//Load all the images...
            return imgs;
        }
        public void done() {
            //Remove the "Loading images" label.
            animator.removeAll();
            loopslot = -1;
            try {
                imgs = get();
            } ...//Handle possible exceptions
        }

    }).execute();
}
//加载图像的后台任务。
SwingWorker worker=(新SwingWorker(){
公共图像图标[]doInBackground(){
最终图像图标[]innerImgs=新图像图标[nimgs];
…//加载所有图像。。。
返回imgs;
}
公众假期结束(){
//移除“正在加载图像”标签。
animator.removeAll();
loopslot=-1;
试一试{
imgs=get();
}…//处理可能的异常
}
}).execute();
}
首先,我是新手,如果这是个愚蠢的问题,我很抱歉。但是我从来没听说过这个“.excecute()”。我不明白,我也无法从谷歌上找到任何关于它的信息。我看到这是。。。匿名内部类?(请纠正我)它正在启动一个线程来加载图像。我认为run()方法是通过调用start()调用的?请帮我澄清这一困惑

SwingWorker
的一种方法。您看到的是一个正在实例化的对象,并立即调用其
execute
方法

不过,我不得不承认,我对代码编译有点惊讶,因为它似乎将
execute
的结果分配给
worker
变量,文档告诉我们
execute
是一个
void
函数

如果我们稍微解构一下代码,它就会更清晰。首先,我们创建一个扩展SwingWorker的匿名类,并同时创建它的一个实例(这是括号中的大号):

更新:事实上,我试过了。所以不是很好的示例代码。这将汇编:

SwingWorker worker = new SwingWorker<ImageIcon[], Object>() {
    public ImageIcon[] doInBackground() {
            final ImageIcon[] innerImgs = new ImageIcon[nimgs];
        ...//Load all the images...
        return imgs;
    }
    public void done() {
        //Remove the "Loading images" label.
        animator.removeAll();
        loopslot = -1;
        try {
            imgs = get();
        } ...//Handle possible exceptions
    }

};
worker.execute();
SwingWorker-worker=新的SwingWorker(){
公共图像图标[]doInBackground(){
最终图像图标[]innerImgs=新图像图标[nimgs];
…//加载所有图像。。。
返回imgs;
}
公众假期结束(){
//移除“正在加载图像”标签。
animator.removeAll();
loopslot=-1;
试一试{
imgs=get();
}…//处理可能的异常
}
};
worker.execute();
.execute()
正在匿名类的实例上调用execute方法;i、 e.由
新SwingWorker(){…}
创建的对象。(它是一个扩展
SwingWorker
类的类。)


根据javadoc,
execute
方法将实例表示的任务安排在现有工作线程上执行。工作线程的生命周期(例如创建、启动等)由Swing基础结构负责。

这里是教程:;哦,我明白了,所以这不是线程的实例?嗯,我现在觉得自己很傻。@yoonsi:没必要觉得自己很傻,匿名课程很棘手
SwingWorker
与线程相关,因为它将在Swing管理的单个后台线程上发生的工作排队。
SwingWorker worker = tmp.execute();
SwingWorker worker = new SwingWorker<ImageIcon[], Object>() {
    public ImageIcon[] doInBackground() {
            final ImageIcon[] innerImgs = new ImageIcon[nimgs];
        ...//Load all the images...
        return imgs;
    }
    public void done() {
        //Remove the "Loading images" label.
        animator.removeAll();
        loopslot = -1;
        try {
            imgs = get();
        } ...//Handle possible exceptions
    }

};
worker.execute();