这个java.execute()方法调用意味着什么?
我正在阅读sun java教程,在这里看到了以下页面: 在标题下,“小程序中的线程”我找到了这段代码:这个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[]
//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();